2016-08-12 8 views
3

私は余暇の中で少しPythonを学んでいます。このサイトで見つかった電話帳を作成しようとしています。 Python assignment for a phonebook。これをテンプレートとして使用しましたが、print_menu関数を省略しました。それは私が見ることができる唯一の違いですが、数字を追加すると、その部分にはまってしまいます。単に名前と番号を入力して、ifループをエスケープしないようにしてください。誰かが私がなぜこのように立ち往生しているのか教えてもらえれば、私はそれを感謝します。Pythonの初心者(そしてプログラミング)はどこが間違っているのかわかりません

phoneBook = {} 

def main(): 
    action = input("What would you like to do? \n 1. Add \n 2. Delete \n 3. Print \n 4. Quit \n") 
    while action != 4: 
     if action == '1': 
      name = input("Enter name: ") 
      num = input("Enter number: ") 
      phoneBook[name] = num 
     elif action == '2': 
      name = input("Delete who?") 
      if name in phoneBook: 
       del phoneBook[name] 
      else: 
       print("Name not found") 
     elif action == '3': 
      print("Telephone numbers: ") 
      for x in phoneBook.keys(): 
       print("Name: ", x, "\tNumber: ", phoneBook[x]) 
     elif action == '4': 
      print("Application closed.") 

main() 
+2

'アクションながら=「4」:!' –

答えて

6

あなたがここに二つの問題があります。 PadraicとLeistungsabfallが言及しているように、inputは文字列を返しますが、でもは入力を1回だけ取得しています。あなたが入力を引き続き入手したい場合は、あなたのループ内でそれを置くために必要になるだろう:

action = None 
while action != '4': 
    action = input('What action would you like? ') 
    # the rest of your code here 
+0

ありがとう、ちょうどこれらの修正で動作した – Podge

6

input()は、整数ではなく文字列を返します。

ので

while action != 4: 

はなるはずです:

while action != '4': 
+0

いやだけの代わりに、整数にそれらすべてを変え、ことを見ました。私は返事を見る前にちょうどそれを働かせました。ありがとう! – Podge

関連する問題