You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算圆周率前314159位数字之和?代码运行异常求助

问题分析与修复方案

问题根源

你的代码计数器到51198后停止累加,核心原因是默认requests.get请求的User-Agent被目标网站识别为爬虫,导致返回的页面内容不完整,只包含了前5万多位圆周率数字。

修复方案

给请求添加模拟浏览器的User-Agent请求头,让网站返回完整页面。同时优化代码细节,避免使用内置函数名作为变量名,调整终止条件更贴合需求。

修正后的代码

import requests
from bs4 import BeautifulSoup

total = 0
counter = 0
# 模拟浏览器请求头,避免被识别为爬虫
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

req = requests.get("https://www.piday.org/million/", headers=headers)
soup = BeautifulSoup(req.content, "html.parser")
pi_text = soup.find(id="million_pi").get_text()

# 计算前314159位数字的总和
for digit in pi_text:
    if digit.isdigit():
        total += int(digit)
        counter += 1
        # 达到目标位数立即终止循环
        if counter >= 314159:
            break

print(total)

额外优化说明

  • 替换sum为total:sum是Python内置函数,用它做变量名会覆盖内置功能,可能引发意外问题。
  • 调整终止条件:原代码counter>314160会多计算一位,改为counter>=314159更准确匹配你的目标。

内容的提问来源于stack exchange,提问作者Adithya Prasad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 14:20:05