2016-11-20 6 views
0

__getitem__何の属性を持っていないし、コードがエラーで失敗している:"int型のオブジェクトは、私は私の関数から値を呼び出すしようとしています

int object has no attribute __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) 
+3

、(、M、X)DEF合同

あなたは '' x_0 [i] 'が何をすると本当に期待しましたか?この機能からどのような出力を期待していますか? – jonrsharpe

+0

なぜあなたは叫んでいますか? *何のシリーズ?また、あなたは何を考えていますか? '7 [0]'はすべきですか? – jonrsharpe

答えて

0

整数のインデックスにアクセスしようとしていますが、何も返されません。

あなたは、私が試行から得たものから、関数を呼び出す際に3番目の引数として配列を渡したがっています。

congruential(11, 16, 7)は、意図したとおりにcongruential(11, 16, any_arr)に変換する必要があります。 any_arr=range(7)はその配列の可能な値の1つです

+0

入手しました。ありがとう:) – blackPanther

0

あなたは数値を渡してリストとして扱います。 "合同(11,16,7)"を に渡してから、x_0をxに割り当てます(x_0は7に割り当てられています)。 次に、x_0の0の位置にある要素にアクセスしようとしています(x_0 = 7でリストではないため、実際にはありません)。

合同乱数ジェネレータを生成し、シード値として7を使用する場合は、以下のコードを試すことができます。 `x_0`は` 7`(X_0 = 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、16,7)

+0

このコードは、私に "範囲外のリスト割り当てインデックス"というエラーを与えています – blackPanther

+0

ただ私のコードを編集しました。 –

+0

ありがとうAkash。しかし、これは複数の呼び出しでは機能しません。たとえば、合同(11,16,8) 合同(7,16,7) 合同(8,16,7)のような異なるパラメータでこの関数を呼び出すと、コードが失敗しています。 – blackPanther

関連する問題