'int'对象没有属性__getitem__

时间:2016-11-20 09:38:32

标签: python attributes

我正在尝试从我的函数调用值,但代码失败并显示错误:

  

int对象没有属性__getitem__

请解释并建议我应该尝试什么。下面是python代码:

def congruential(a, m, x):
    x_0 = x
    for i in range (5):
        x_0[i] = (a * x_0[i-1]) % m
        if x_0[i] == x_0[0]:
            break
        print 'Value of X0 =', x
        print 'Value of a = ', a
        print 'Value of m =', m
    print 'Numbers in series'
    for j in range (4):
        print x_0[j]


congruential(11, 16, 7)

2 个答案:

答案 0 :(得分:0)

您正在尝试访问整数的索引,这肯定不会返回任何内容。

你肯定想把一个数组作为调用函数的第三个参数传递,这是我从尝试中得到的。

congruential(11, 16, 7)应转换为congruential(11, 16, any_arr)以执行预期的操作。 any_arr=range(7)是该数组

的可能值之一

答案 1 :(得分:0)

您正在传递号码并尝试将其视为列表。 你正在通过“同心(11,16,7)” 然后将x_0分配给x(x_0分配给7)。 然后你试图访问x_0的0位置的元素(实际上没有,因为x_0 = 7而不是列表)。

如果您尝试生成同余随机数生成器并将7作为种子值,则可以尝试以下代码。

def同余(a,m,x):

x_0 = []
x_0.append(x)
for i in range (1,6):
    z = (a * x_0[i-1]) % m
    x_0.append(z)
    if x_0[i] == x_0[0]:
        break
    print 'Value of X0 =', x
    print 'Value of a = ', a
    print 'Value of m =', m
print 'Numbers in series'
for j in range (len(x_0)):
    print x_0[j]

同余(11,167)