Python列表转整数报错,求欧拉项目第13题前10数求和方案
问题修复方案
你的代码存在几个语法和逻辑问题,以下是修复步骤和替代方案:
1. 修正列表切片语法
Python中列表的切片语法是[起始索引:结束索引],而非[索引1, 索引2],后者会被识别为元组索引,直接触发语法错误。
2. 正确过滤无效字符
你写的换行符判断ch != ' '是错误的,应改为ch != '\n';另外if ch != ''属于冗余判断,从文件读取的字符中不会包含空字符串。
3. 逐个转换字符为整数
不能直接对字符切片调用int(),需要将每个字符单独转为整数后再进行求和操作。
4. 安全读取文件(推荐)
使用with语句打开文件,能自动完成文件关闭操作,避免资源泄漏。
修复后的代码
# 读取文件并过滤换行符,保留所有数字字符 with open('/Users/bodhimate/Desktop/Coding/Math/projectEuler/projectEulerDoc13.txt') as f: data = [ch for ch in f.read() if ch != '\n'] # 取前10个字符转为整数,然后求和 first_ten_sum = sum(int(ch) for ch in data[:10]) print(first_ten_sum)
更简洁的写法
如果仅需计算前10个数字的和,无需生成完整列表,可直接读取后处理:
with open('/Users/bodhimate/Desktop/Coding/Math/projectEuler/projectEulerDoc13.txt') as f: # 读取所有内容,去掉换行符,取前10个字符转int求和 content = f.read().replace('\n', '') first_ten_sum = sum(int(c) for c in content[:10]) print(first_ten_sum)
内容的提问来源于stack exchange,提问作者Bodhi Mate
相关产品推荐
相关产品推荐

