2016-10-18 4 views
-2

(Python 3.x)Wie eine Variable verwendet eine andere Variable in einer Liste zu finden - Python

z=[] 
x=0 
while 1==1: 
    x=x+1 
    y=1 
    z.append(x) 
    while y==1: 
     a = 0 
     b = 0 
     if z(a)==x: 
      print(x) 
      y = 2 
     elif x%z(a)!= 0: 
      a = a+1 
     elif b == 2: 
      y = 2 
     else: 
      b = b+1 

Also machte ich einen Code, alle Primzahlen bis Python Abstürze zu finden. Es beruht jedoch auf z (a), damit es funktioniert. Die Idee ist, dass wenn sich "a" ändert, es in der Liste weitergeht.

"z (a)" ist, wo der Fehler liegt, also weiß jemand einen Weg, um das zu beheben?

Antwort

0

z ist eine Liste. Mit dem Operator z[a] (und nicht z(a), der einen Funktionsaufruf mit a als Parameter annimmt) können Sie die Werte innerhalb von Indizes ansteuern.


Ich habe die Freiheit, mit boolean variables, += Betreiber und Auspacken Werte genommen:

z = [] 
x = 0 
while True: 
    x += 1 
    y = True 
    z.append(x) 
    while y: 
     a, b = 0, 0 
     if z[a] == x: 
      print(x) 
      y = False 
     elif x % z[a]: a += 1 
     elif b == 2: y = False 
     else: b += 1 

Ich glaube, das ist, was Sie (unendlich erhöht wird prime Generator) erreichen wollen:

def prime (n): return not any([n % i == 0 for i in range(2, n)]) 
x = 0 
while True: 
    if prime(x): print(x) 
    x += 1 
+0

Danke, jetzt druckt es nur "1" gibt es irgendeine Lösung? – LokiH

+0

@LokiH schau dir das letzte Par an. – Uriel

Verwandte Themen