Python程序中的类型错误,“int”对象不可下标

Python程序中的类型错误,“int”对象不可下标,python,Python,问题是“TypeError:“int”对象不可下标”,对于我的perfect square程序,下面是程序出错的地方: tested_number = input('What number do you want to test, maximum is 10000? ') y = 0 sum_of_number = sum(int(y) for y in tested_number)#the sum of all the number in the list, highest is

问题是“TypeError:“int”对象不可下标”,对于我的perfect square程序,下面是程序出错的地方:

tested_number = input('What number do you want to test, maximum is 10000? ')    
y = 0   
sum_of_number = sum(int(y) for y in tested_number)#the sum of all the number in the list, highest is 36 due to 10000 limit
digital_root = sum_of_number[0] + sum_of_number[1]
if digital_root == (2, 3, 5, 6, 8, 9):
    print(tested_number, 'is not a perfect square')
    pass
print(tested_number, 'is a perfect square')
当你说:

for y in tested_number

您正在尝试遍历分配给测试的\u编号的整数。你不能那样做。我不确定您打算将哪个变量作为列表,但y或tested_number都不是列表。

当我运行您的程序时,我得到

$ python3 b.py
What number do you want to test, maximum is 10000? 456
Traceback (most recent call last):
  File "b.py", line 4, in <module>
    digital_root = sum_of_number[0] + sum_of_number[1]
TypeError: 'int' object is not subscriptable
这真的很直截了当。sum of number是一个整数,它是您期望的数字之和,而int不能被下标。

sum在一个范围内 如果要在测试编号范围内求和,请尝试以下操作:

tested_number = input('What number do you want to test, maximum is 10000? ')    
sum_of_number = sum(y for y in range(tested_number))
print sum_of_number

它可能无法完全解决问题,但列表的理解需要放在方括号内。e、 g.[y代表y在…]你不能通过下标得到数字的位数。改为数字根=求和,数字的strsum。@moarCoffee它是一个生成器,它的写入方式。它不需要构建到列表中。sum_of_number是一些整数的和。sum_of_number[0]尝试为整数下标,但这没有任何意义,因此会出现错误。
tested_number = input('What number do you want to test, maximum is 10000? ')    
sum_of_number = sum(y for y in range(tested_number))
print sum_of_number
What number do you want to test, maximum is 10000? 20
190