python每日一问


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默认的求和函数,他是一个函数体,当然无法和数值相加