无效的十进制整数字面量

0 投票
2 回答
3778 浏览
提问于 2025-04-19 07:21

我在运行代码时遇到了这个错误,出现在第49行,具体是total_energy中的last_digit+=int(dig)这行。错误信息是ValueError: invalid literal for int() with base 10:'

def total_energy(data):
    last_digit=0
    lines= data.split('\n')

for line in lines:
    if len(line)>6:
        your_digits=line[-15:].split(',')

    for dig in your_digits:
         last_digit+=int(dig)

print last_digit

我也试过用float,但还是出现同样的错误。http://pastebin.com/1UpzeAgD 这是代码正在处理的数据。希望能得到一些帮助!

2 个回答

0

在编程中,有时候我们会遇到一些问题,可能是因为代码写得不够清晰,或者是我们对某些概念理解得不够透彻。比如,有些人可能会在使用某个功能时,发现它的表现和预期不一样。这种情况通常需要我们仔细检查代码,看看是不是哪里出了问题。

另外,编程的世界里有很多工具和库可以帮助我们完成任务,但如果不熟悉它们的用法,就可能会导致错误。因此,学习和理解这些工具的使用方法是非常重要的。

总之,编程就像解谜一样,有时候需要我们耐心地去寻找答案,理解每一行代码的意义,才能写出更好的程序。

import csv

answer = 0
with open('path/to/file') as infile:
    for line in csv.reader(infile, delimiter=','):
        nums = (int(i) for i in line[3:])
        answer += sum(nums)
print answer
0

在你的原始数据中:

line89: 06:28,9.1,2.3,0,0,0,0,30,0,0,89,0
line90: 06:29,9.1,2.7,0,0,0,0,0,0,0,87,0

当你尝试用 int('') 来解析第90行时,遇到了这个错误。你可以看到,第90行的数据长度比较短,这导致你代码中的 line[-15:] 返回了意想不到的结果。

你需要修改获取你数字的方式。

试试这个:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

f = open('data_printed.txt', 'r')
data = f.read()
f.close()

last_digit=0
lines= data.split('\n')
for line in lines:
    if len(line)>6:
        your_digits=line.split(',')[-7:]  # here to get last 7 elements you want
    for dig in your_digits:
        last_digit+=int(dig)

print last_digit

告诉我是否有效。

撰写回答