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

Python处理大数字求和报错咨询(欧拉计划第13题)

解决欧拉计划第13题的ValueError问题及大数字求和技巧

首先,咱们来拆解你遇到的ValueError问题:这个错误的根源是你尝试转换的字符串里包含换行符(就是那些看不见的\n),Python的int()函数只能解析纯数字字符的字符串,一旦混进换行符或者其他非数字字符,就会报错。比如你看到的'37107287533902102798797998220837590246510135740250\n46376937677490...'里,\n就是换行符,这直接导致转换失败。

一步一步解决问题

1. 清理输入中的换行符

不管你是从文件读取数字,还是直接复制了多行字符串,第一步都要把换行符去掉:

  • 如果是从文件读取:
    with open('numbers.txt', 'r') as f:
        # 按行读取,每行去掉首尾的空白(包括换行、空格)后转成整数
        numbers = [int(line.strip()) for line in f]
    
    strip()会自动移除每行开头和结尾的所有空白字符,完美解决换行符的问题。
  • 如果是直接复制的多行字符串:
    raw_numbers = """37107287533902102798797998220837590246510135740250
    46376937677490009712648124896970078050417018260538
    ..."""
    # 分割成每行,再逐个清理转int
    numbers = [int(line.strip()) for line in raw_numbers.splitlines()]
    

2. 大数字求和与提取前10位

Python对整数的大小没有限制,完全不用担心溢出问题,直接求和就行:

total_sum = sum(numbers)
# 把总和转成字符串,取前10位
first_ten = str(total_sum)[:10]
print(first_ten)

这样就能得到你需要的结果了。

处理大数字和换行问题的通用技巧

  • 换行符处理:永远记得用strip()或replace('\n', '')清理输入字符串,避免非数字字符干扰转换。如果数字里还有空格,也可以用replace(' ', '')一并去掉。
  • Python的大整数支持:Python原生支持任意精度的整数,不管数字有多少位,直接转int计算都没问题,不用像其他语言那样手动处理大数运算。
  • 极端场景优化:如果遇到百万位以上的超大数字(比如欧拉计划里更难的题目),可以考虑用字符串逐位相加的方式,但对于第13题的规模,直接转int是最简洁高效的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:58:58