2016-11-20 9 views
0

Ich versuche, die Werte aus meiner Funktion aufzurufen und der Code mit dem Fehler fehlschlägt:‚int‘ Objekt hat kein Attribut __getitem__

int object has no attribute __getitem__

Bitte erklären und vorschlagen, was sollte ich versuchen. Unten ist der Python-Code:

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

Da '' x_0' ist 7' (wie 'x_0 = X '), Was genau hast du erwartet, dass 'x_0 [i]' zu tun ist? Welche Ausgabe erwarten Sie von dieser Funktion? – jonrsharpe

+0

Warum schreist du? * Was * Serie? Und wieder, was denkst du z.B. '7 [0]' sollte tun? – jonrsharpe

Antwort

0

Sie versuchen, auf einen Index einer Ganzzahl zuzugreifen, die definitiv nichts zurückgibt.

Sie wollten definitiv ein Array als drittes Argument beim Aufruf der Funktion übergeben, von dem, was ich von dem Versuch bekomme.

congruential(11, 16, 7) sollte in congruential(11, 16, any_arr) konvertiert werden, um das zu tun, was beabsichtigt war. any_arr=range(7) ist einer der möglichen Werte für dieses Array

+0

Bekam es. Danke :) – blackPanther

0

Sie übergeben eine Nummer und versuchen, es als Liste zu behandeln. Sie übergeben "congruential (11, 16, 7)" und ordnen dann x_0 x zu (x_0 ist 7 zugeordnet). Dann versuchen Sie, auf das Element an der Position 0 von x_0 zuzugreifen (was eigentlich keiner seit x_0 = 7 ist und keine Liste).

Wenn Sie versuchen, einen kongruenten Zufallszahlengenerator zu generieren und 7 als Startwert zu verwenden, können Sie den folgenden Code ausprobieren.

def congruential (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] 

congruential (11, 16.7)

+0

Dieses Stück Code gibt mir einen Fehler "Liste Zuordnung Index außerhalb des Bereichs" – blackPanther

+0

Nur meinen Code bearbeitet. –

+0

Danke Akash. Aber das funktioniert nicht für mehrere Anrufe. Zum Beispiel, wenn ich diese Funktion mit verschiedenen Parametern wie Congruential (11, 16, 8) Congruential (7, 16, 7) Congruential (8, 16, 7) Code schlägt fehl. – blackPanther

Verwandte Themen