2016-04-05 19 views
0

名前を入力するための入力ラベルがあります。私はcsvファイルの列0を検索する必要があります。その名前が存在する場合は、既に作成されているリストボックスに表示されます(これは問題ありません)。名前が存在しない場合は、タイムラベル(elifセクション)を作成します。しかし、私が書いたコードでは、名前がANDでないときにラベルが表示されます。入力が存在しない場合にタイムラベルを作成

with open('CLASSES.csv', 'rt')as f: 
    reader=csv.reader(f) 
    people=[] 
    for column in reader: 
     if column[0]==entry: 
      people.append(column[0:8]) 

      namebox.delete(0,END) 

      nameslist=[x[0] for x in people] 
      for names in (nameslist): 
       namebox.insert(END, names) 

     elif column[0]!=entry: 
       INC=Label(master,text='User Does Not Exist',bg='#800000',fg='white') 
       INC.grid(row=2,column=3,columnspan=5,sticky='s') 
       def af(): 
        INC.configure(fg='#800000')    
       INC.after(1000, af) 

if column[0] == entry:セクションでは、正常に動作しますが、私はそれが簡単にプログラムがどのように機能するかを理解するために作成することが含まれるだろうと思いました。

助けがあれば助かります。

+0

あり、「リーダー」で複数のレコード、ので、いくつかのレコードの同じエントリがあると、いくつかのレコードがないので、ifとelifの両方が異なるレコード上で実行されています。 ifとelseはここでうまくいくことに注意してください。 –

+0

私は他の人にそれを変更しましたが、私はまだ同じリストを検索して同じ問題を抱えていますので、結果と一致していて、ありがたくありがとうございます - @CurlyJoe –

答えて

1

各エントリのレコードを表示しています。

boolean型付き変数を使用して、エントリが見つかった場合に格納します。ループが始まる前にfalseで初期化してください。エントリが等しい場合は、trueに設定します。ループの後でこの値をチェックし、ifブランチにそれを適用します。

擬似コード

search = "SomeEntryValue" 
found = False 
for line in open("csv-file", "r"): 
    if line[0] == search: 
     found = True 
     # Optional Tasks to be done here for each entry 
if found: 
    # Display the Data 
else: 
    # display the "User does not exist" message 
+0

私はあなたの提案を使ってコードを微調整しました、ありがとう! :) –

+0

もしそうなら、答えとしてそれも受け入れてください – R4PH43L

関連する問題