import sys
f=open('2-2.txt','r')
sys.stdin=f
for line in sys.stdin:
sum+=int(line)
print(sum)
Traceback (most recent call last):
File "D:\mypython\2-2.py", line 5, in
sum+=int(line)
TypeError: unsupported operand type(s) for +=: 'builtin_function_or_method' and 'int'
为啥,作了int转换还这样
该回答通过自己思路及引用到baidu搜索,得到内容具体如下:
在这段代码中,原因是 sum
变量未初始化,导致在执行 sum+=int(line)
时报错。具体来说,Python3 中的内置函数 sum()
覆盖了代码中的变量 sum
,导致变量 sum
被重定义为函数对象,因此在执行 sum+=int(line)
时,Python 解释器将其解释为 sum = sum.__add__(int(line))
,因此提示 TypeError: unsupported operand type(s) for +=: 'builtin_function_or_method' and 'int'
。
要解决这个问题,可以将代码中的 sum
变量初始化为 0,即在程序开始前添加 sum = 0
语句。修改后的代码如下所示:
import sys
f=open('2-2.txt','r')
sys.stdin=f
sum = 0
for line in sys.stdin:
sum += int(line)
print(sum)
这样修改后,程序应该可以正常执行,并输出文件中所有整数的和。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
该回答引用GPT:
在这段Python代码中,错误出现在sum+=int(line)
这一行。从错误信息可以看出,出现了类型错误。具体来说,'builtin_function_or_method'和'int'这两种类型不支持'+='运算符。导致这个错误的原因可能有很多,例如在代码开头定义变量sum
并将其初始化为一个函数,如下所示:
sum = print
这个操作会将sum指向内置函数print。因此,在sum+=int(line)
中使用了sum()函数,sum变成了函数,而不是一个整数。为了解决这个问题,我们需要将sum()函数改为一个整数变量,如下所示:
sum = 0
通过这个操作,我们为sum变量分配了一个初始值0,使其成为一个整数变量。这样,我们就可以顺利地使用sum+=int(line)
运算符实现累加操作了。
如还有疑问,可留言帮助解决。
sum在你没有重新定义之前,是python默认的求和函数,他是一个函数体,当然无法和数值相加