from math import log
lliste = [2]
bovengrenspriem = eval(input('geef een getal van die je weten wil welke priemgetal het is? ',))
while not type(bovengrenspriem) == int:
bovengrenspriem = eval(input('Foute invoer, geef een getal van die je weten wil welke priemgetal het is? ',))
if type(bovengrenspriem) == int:
break
counter = 2
x = 2
while lliste[-1] < bovengrenspriem or lliste[-1]== bovengrenspriem:
liste = []
for i in range (1,counter+1):
if counter % i == 0:
liste.append(i)
if len(liste) == 2:
lliste.append(counter)
counter += 1
else:
counter +=1
lliste[:]= [float(p)for p in lliste]
lliste[:]= [log(x[t]) for t in lliste]
错误似乎就在这里。对于“int”对象不可下标,浮点线是我测试的,如果将列表中的每个数字转换为 float 是否可以修复它,但它似乎不起作用
a = sum (lliste)
result = a/bovengrenspriem
print (result)
最佳答案
首先要做的事情......没有理由在这里使用 eval 有一个更简单的方法来做到这一点:
bovengrenspriem = eval(input('geef een getal van die je weten wil welke priemgetal het is? ',))
while not type(bovengrenspriem) == int:
bovengrenspriem = eval(input('Foute invoer, geef een getal van die je weten wil welke priemgetal het is? ',))
if type(bovengrenspriem) == int:
break
这将是:
while not bovengrenspriem.isdigit()
至于错误消息......您正在尝试在中索引 int
x[t]
关于python - 类型错误 : 'int' object is not subscriptable {Python},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44487987/