【问题标题】:TypeError: unsupported operand type(s) for +=: 'builtin_function_or_method' and 'int'类型错误:+= 不支持的操作数类型:“builtin_function_or_method”和“int”
【发布时间】:2013-10-04 08:53:03
【问题描述】:

我在尝试运行此代码时收到此错误 (TypeError: unsupported operand type(s) for +=: 'builtin_function_or_method' and 'int')

total_exams = 0
for total_exams in range(1, 100001):
    sum += total_exams
print(sum)

sum = 0
total_exams = 0
while count <= 100000:
    sum += total_exams
    total_exams += 1
print(sum)

sum = int("Please enter Exam grade, or press 999 to end: ")
while true:
    if sum <= 100:
        sum += total_exams
        total_exams += 1
    elif sum == "999":
        print(sum / total_exams)

总的来说,我只需要运行程序直到输入 999,然后找到所有输入数字的平均值。至少有一点帮助会很好。

所以我已将代码编辑为(新)

totalExams = 0
total_sum = 0
for totalExams in range (1, 100001):
    total_sum += totalExams
print(total_sum)

total_sum = 0
totalExams = 0
while totalExams <= 100000:
    total_sum += totalExams
    totalExams += 1
print(total_sum)

exam_sum = int("Please enter Exam grade, or press 999 to end: ")
while true:
    if exam_sum <= 100:
        exam_sum += totalExams
        totalExams += 1
    elif exam_sum == "999":
        print(exam_sum / totalExams)

Traceback(最近一次调用最后一次):

文件“C:/Python33/vfvfv.py”,第 14 行,在 Exam_sum = int("请输入考试成绩,或按999结束:") ValueError: invalid literal for int() with base 10: 'Please enter Exam grade, or press 999 to end:'

【问题讨论】:

  • 到您的最后一次编辑:您忘记了if 和一个: 在elif 之后。但是,您应该在使用之前覆盖sum。另请注意,您至少应该花一些时间了解您在做什么,尤其是阅读错误消息。大多数情况下,它会指出发生错误的确切行。
  • 你的代码真的很糟糕。
  • 这行不通:sum = int("Please enter Exam grade, or press 999 to end: ")
  • 代码没有任何意义……

标签: python


【解决方案1】:

这是对你们中的一个问题的答案,但是它对您没有多大帮助,因为您的代码已经很糟糕了……

sum 是一个内置函数,例如len。使用另一个名字就可以了 ;-)

进一步说明:

在这一行

sum += totalExams

你在做

sum = sum + totalExams

其中totalExams 的类型为int,sum 是python 中的内置函数。由于+ 运算符未针对int 和built-in-function 实现,因此您将获得TypeError。 (sum 之前没有重新定义,所以它指向函数。)

您可以通过简单地选择一个尚未使用的变量名称来解决它,例如total_sum 或sum_exams 等:

sum_exams += totalExams

或者在使用之前简单地声明它:

sum = 0

警告:这样做会覆盖内置函数sum()。

更多问题:

在这里,您将string 转换为int,这绝对没有意义:

exam_sum = int("Please enter Exam grade, or press 999 to end: ")

我猜你是想从用户那里获取一些输入并将其转换为整数?在这种情况下,您应该使用input():

exam_sum = input("Please enter Exam grade, or press 999 to end: ")

在您再次编辑问题之前,下一个错误将是

NameError: name 'true' is not defined

True 是你想要的……

最后但并非最不重要的一点

完成所有这些修复后,您最终会陷入无限循环。现在坐下来想想你的代码,然后再问下一个问题。

【讨论】:

  • 别忘了exam_sum == "999":
【解决方案2】:

您在第一次循环之前还没有定义sum。如果你添加

sum = 0

它会正常工作的。

但是,您可能希望使用不同的变量名,以免覆盖内置函数。

【讨论】:

    【解决方案3】:

    如果您试图让用户输入数字,您的意思可能是 int(input(...))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-01
      • 2021-06-16
      • 2014-06-16
      • 2014-03-16
      相关资源
      最近更新 更多