2016-07-28 7 views
-3

Ich habe eine Liste von String-Nummern und einen Zähler innerhalb einer for-Schleife. Wenn der Zähler in der Liste habe ich etwas, wie folgt aus:Vergleich der Zahl umgewandelt in String-String-Liste

codes = ['123','1245','564','8920','57498'] 
f = open('path_to_file','r') 
for lineno, line in enumerate(f, start=1): 
    if str(lineno) in codes: 
     print str(lineno) + ' is in the list' 

Das Problem ist, dass es scheint, dass die, wenn die Bedingung von einem bestimmten Punkt immer wahr ist, denn wenn lineno = 123 immer den Satz drucken innen der if-Block.

Wer sieht etwas falsch mit diesem Code? Dank

+1

Unsinn. Setze eine Variable wie 'i = 122'. 'str (i) in Codes' ist falsch. Erhöhen Sie es: True. Inkrementieren erneut: Falsch. Nimm mir 7 Zeilen in einem Interpreter, um mit absolutem Anfänger-freundlichem Code zu demonstrieren, dass deine "wenn Bedingung immer von einem bestimmten Punkt wahr ist" Annahme schlecht ist. Ist das dein echter Code? –

+0

Warum sagst du 'f = open (...)' dann 'Datei' aufzählen? –

+2

Ich konnte diesen Fehler nicht reproduzieren. Sind Sie sicher, dass Sie das genau so codieren? http://pastebin.com/w232SzaV – brettb

Antwort

0

I-Code unten:

In [8]: codes = ['1', '3', '4'] 

In [9]: f = open("test.py", "r") 

In [10]: for lineno, line in enumerate(f, start=1): 
    ....:  if str(lineno) in codes: 
    ....:   print str(lineno) + ' is in the list' 
    ....: 
1 is in the list 
3 is in the list 
4 is in the list 

Es sieht nicht gut aus.