2016-07-28 8 views
-3

私は文字列のリストとforループ内のカウンタを持っています。カウンタは、私が何かを、リストにある場合は、次のように:strリストの文字列へのキャストの比較

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' 

問題は、LINENO = 123一度それは常に内部の文章を印刷するので、もし条件が、ある時点から常に真であると思われるということですifブロック

誰でもこのコードに間違いがありますか?怒鳴るおかげ

+1

ナンセンス。 'i = 122'のような変数を設定します。 'str(i)in codes'はFalseです。インクリメント:Trueインクリメント:False。あなたの "if条件は常にある点から真実"という仮定が悪いという完全な初心者フレンドリーなコードを実演するために私は通訳で7行を見ました。これはあなたの本当のコードですか? –

+0

なぜ 'f = open(...) 'と言って、' file'を列挙していますか? –

+2

このエラーを再現することができませんでした。これはコーディング方法とまったく同じですか? http://pastebin.com/w232SzaV – brettb

答えて

0

私のコードは:

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 

それはOKになります。