web-dev-qa-db-ja.com

Pythonでメニューを作成する

私はpythonで必要なメニューを作成しています:

  1. 番号付きオプションを含むメニューを印刷する
  2. ユーザーに番号付きオプションを入力させます
  3. ユーザーが選択したオプション番号に応じて、そのアクションに固有の関数を実行します。今のところ、関数は実行されていることを出力するだけです。
  4. ユーザーが無効なものを入力すると、入力したことをユーザーに伝え、メニューを再表示します
  5. 辞書を使用して、オプションの番号をキーとして、オプションとして表示するテキストを値として、メニューオプションを保存します。
  6. メニューシステム全体がループ内で実行され、ユーザーが終了/終了を選択するまでユーザーが選択できるようにしておく必要があります。終了/終了すると、プログラムが終了します。

私はPythonが初めてで、コードで何が間違っていたかわかりません。

これまでのところ、これは私のコードです:

ans=True
while ans:
    print (""""
    1.Add a Student
    2.Delete a Student
    3.Look Up Student Record
    4.Exit/Quit
    """")
    ans=input("What would you like to do?" 
    if ans=="1": 
      print("\nStudent Added") 
    Elif ans=="2":
      print("\n Student Deleted") 
    Elif ans=="3":
      print("\n Student Record Found") 
    Elif ans=="4":
      print("\n Goodbye") 
    Elif ans !="":
      print("\n Not Valid Choice Try again") 

回答済み

これは明らかに彼が望んでいたものです:

menu = {}
menu['1']="Add Student." 
menu['2']="Delete Student."
menu['3']="Find Student"
menu['4']="Exit"
while True: 
  options=menu.keys()
  options.sort()
    for entry in options: 
      print entry, menu[entry]

    selection=raw_input("Please Select:") 
    if selection =='1': 
      print "add" 
    Elif selection == '2': 
      print "delete"
    Elif selection == '3':
      print "find" 
    Elif selection == '4': 
      break
    else: 
      print "Unknown Option Selected!" 
12
Jack
def my_add_fn():
   print "SUM:%s"%sum(map(int,raw_input("Enter 2 numbers seperated by a space").split()))

def my_quit_fn():
   raise SystemExit

def invalid():
   print "INVALID CHOICE!"

menu = {"1":("Sum",my_add_fn),
        "2":("Quit",my_quit_fn)
       }
for key in sorted(menu.keys()):
     print key+":" + menu[key][0]

ans = raw_input("Make A Choice")
menu.get(ans,[None,invalid])[1]()
9
Joran Beasley

わずかな修正がいくつか必要でした:

ans=True
while ans:
    print ("""
    1.Add a Student
    2.Delete a Student
    3.Look Up Student Record
    4.Exit/Quit
    """)
    ans=raw_input("What would you like to do? ") 
    if ans=="1": 
      print("\n Student Added") 
    Elif ans=="2":
      print("\n Student Deleted") 
    Elif ans=="3":
      print("\n Student Record Found") 
    Elif ans=="4":
      print("\n Goodbye") 
    Elif ans !="":
      print("\n Not Valid Choice Try again") 

4つの引用符を3つに変更し(これは複数行の引用符に必要な数です)、"What would you like to do? "の後に閉じ括弧を追加し、入力をraw_inputに変更しました。

7
ChrisProsser

これでうまくいくはずです。 )が欠落しており、必要なのは4つではなく"""だけです。また、最後にElifは必要ありません。

ans=True
while ans:
    print("""
    1.Add a Student
    2.Delete a Student
    3.Look Up Student Record
    4.Exit/Quit
    """)
    ans=raw_input("What would you like to do? ")
    if ans=="1":
      print("\nStudent Added")
    Elif ans=="2":
      print("\n Student Deleted")
    Elif ans=="3":
      print("\n Student Record Found")
    Elif ans=="4":
      print("\n Goodbye") 
      ans = None
    else:
       print("\n Not Valid Choice Try again")
5
jramirez

手順3を完了したように見えます。関数を実行する代わりに、ステートメントを出力するだけです。関数は次の方法で定義されます。

_def addstudent():
    print("Student Added.")
_

次にaddstudent()と書くことで呼び出されます。

入力にwhileループを使用することをお勧めします。メニューオプションをループ外で定義し、printステートメントをループ内に配置し、while(#valid option is not picked)を実行してから、whileの後にifステートメントを配置できます。または、有効なオプションが選択されていない場合は、whileループを実行し、continueループを実行できます。

また、辞書は次の方法で定義されます。

_my_dict = {key:definition,...}
_
2
JFA