我该如何修复程序,无论我如何更改对象的类型,它始终显示TypeError?

时间:2018-06-22 13:35:52

标签: python-3.x

我最近写了一段代码(一个解密器)将结果转换成一个特定的数字(我从以“拉格朗日多项式”为核心的“莎米尔的秘密计划”中得到启发)。我以前写过另一个程序,将秘密变成“秘密”,现在我坚持要再次将“秘密”转换成秘密。

这是我写的:

x_values = []

y_values = []

while -1 not in x_values:

    adder = int(input('Enter x value (Enter "-1" to end): '))

    x_values.append(adder)

else:

    x_values.pop()

while len(y_values) != len(x_values):

    adder = input('Enter y value: ')

    adder = int(adder, 16)

    y_values.append(adder)

S = 0

for i in range(len(x_values)):

    x_other = x_values

    x_current = x_other.pop(i)

    y_other = y_values

    y_current = y_other.pop(i)

    num = y_values[i]

    for a in x_current:                 

        num *= -a

    den = 1

    for a in x_current:

        den *= (x_values[i] - x_current[a])

    S += (num / den)

print('Secret: ', S)

input()

当我运行它时,它显示:

File "C:\Python Code\Decryptor.py", line 37, in <module>
    for a in x_current:
TypeError: 'int' object is not iterable

我阅读了许多有关此问题的文章,但无法解决。你能帮我吗?预先感谢!

编辑:谢谢大家帮助我解决我的问题。我终于设法解决了这个问题,该程序运行起来很不错。

1 个答案:

答案 0 :(得分:0)

在python列表上调用pop方法时,它将从列表中删除输入的索引元素,然后返回该元素。

因此x_current变量在第一次迭代中是一个值等于1的整数(在示例列表中:x_values = [1、2、3、4])。

因此,第二个for循环不正确,因为您试图以不可能的整数进行循环。因此,如果要在包含已弹出的每个元素的列表中进行迭代,则应将第二个循环替换为以下内容:

for a in x_other:

否则,您应在x_current范围内循环。 如果仍有问题,可以发表评论以通知我。