我正在尝试从我的函数调用值,但代码失败并显示错误:
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)
答案 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)