2017-08-18 15 views
-1

私のコードの出力について混乱します。Python Open File - Elseステートメントの場合

は、これが私のファイルです:

201707001 Jenson_ 
201707002 Richard 
201707003 Jean 

これは私のコードです:

def studentInfo (userInput): # storing student info 
    # read the students file 
    with open('C:\\Users\\jaspe\\Desktop\\PADS Assignment\\Student.txt') as f: 
     for line in f: 
      stdId, stdName = line.strip().split(" ", 1) 
      # check if the student exist 
      if userInput == stdId: 
       print("Student found!") 
       print("Student ID: " + stdId + "\nStudent Name: " + stdName) 
      else: 
       print("The student does not exist") 


studentFinder = input("Please enter id: ") 
studentInfo(studentFinder) 

これはコードの私の出力は

Please enter id: 201707001 
Student found! 
Student ID: 201707001 
Student Name: Jenson 
The student does not exist 
The student does not exist 

がどのように私は私のコードを修正すればよいのですか?

+2

質問が不明です。あなたは "自分のコードを修正する方法はありますか"と言いますが、コードが何をすべきかは言いません。 https://stackoverflow.com/help/how-to-ask – mtrw

答えて

3

elseの文が遅すぎます。見つかったら "found"を出力し、次の行で "not found"を出力します!

ファイルの終わりに達するまであなたが学生を見つけられなかったことを知ることはできません。

は私がforためelse対応を使用して解決策を提案してみましょう:

for line in f: 
     stdId, stdName = line.strip().split(" ", 1) 
     # check if the student exist 
     if userInput == stdId: 
      print("Student found!") 
      print("Student ID: " + stdId + "\nStudent Name: " + stdName) 
      break 
    else: 
     print("The student does not exist") 

学生が発見された場合、今、breakを呼び出します。 breakが呼び出されていない場合、forループのelseが入力されます。ニースのpython機能、よく知られていない

(複数回一致させたい場合は機能しません)検索は、複数の検索のために高速になりますので、長期的には、あなたが辞書にあなたのファイルの内容を保存することが

注:

with open('C:\\Users\\jaspe\\Desktop\\PADS Assignment\\Student.txt') as f: 
    d = dict(zip(line.split(" ",1) for line in f) 

dは、高速を使って、あなたのid =>名前の辞書です実行するクエリがたくさんあるときにルックアップします(ファイルは1回だけ読み込まれ、辞書は高速検索のためにハッシュを使用します)

+0

を確認してください。面白いです。私はかつてそれのように使われていた「else」を見たことがない。これは「ベストプラクティス」と考えられていますか? –

+0

@CoryMadden - 言語の一部です。問題を解決するのに役立ち、*読みやすい*ならば、それを使用してください。 – wwii

+0

@wwiiと私だけかもしれません。私は本当にそれを使用しない理由があるかどうか疑問に思っています。 'eval'の使用など、使用するのに「悪い」とみなされる言語の一部であるものがたくさんあります。もちろん、すべてにはユースケースがありますが、これには使用時に注意すべき落とし穴がありますか? –

関連する問題