2016-12-11 2 views
-3

私は数学の質問をするための単純なpythonプログラムを作っています。現在は完全に機能していますが、コードを圧縮して圧縮したいと考えています。ユーザーは6つのメニュー項目から選択することができます。それぞれの項目は加算、減算、掛け算です。最後には次のコードがあり、ユーザーが継続したいかどうかを確認しますまたは別のメニュー項目を試してみてください。Else文Pythonの場合はクラス/ Defを作成する

contC = input() 
     if contC == "Y" or contC == "y": 
      cont = True 

     elif contC == "N" or contC =="n": 
      cont = False 

このコードはすべてのメニュー選択肢にあります。これらのすべて、クラス、またはデフに使用できる方法を1つ作成しますか?私は別のものを試しましたが、何も動かないようです。

+1

その後、方法

def should_continue(user_input): if user_input in ('y', 'Y'): return True if user_input in ('n', 'N'): return False raise ValueError("please enter y/n") 

を作ると。編集中にタイトルから「Python」というタグを削除し、大文字を取り除きます。 "so"で文を開始しないでください – Anthon

答えて

0

を使用してみてください:

def AskMethod(Operation): 
    while True: 
     print("Do you want to do " + Operation.name) 
     Answer = input() 
     if Answer.lower() in 'yes': 
      Operation.use() # Or return Operation. However you do it 
      return False 
     elif Answer.lower() in 'no': 
      return True 
     else: 
      print("Please choose yes or no.") 

for i in Ops: 
    Continue = Ask(i) 
    if Continue == False: 
     break 

これを使用するには、オペアンプのクラスを作成する必要があり、あなたが望むすべての操作を含むops配列ます。 self.nameself.useも追加する必要があります。私は助けてくれるといいですね。

+0

'=='を使って何かが 'False'に等しいかどうかをテストしないでください。常に 'is'を使うべきです:' Continue is False: '。あなたは 'Ask()'関数をどこで定義しますか? – Anthon

+0

入力時に 'o'をタイプすると、AskMethod()は 'True'を返し、' e'または 's'を入力すると' False'を返します。 – Anthon

+0

@Anthonブール値でアイデンティティテストを使用する理由は何ですか?ここでもっと正解は '続行しないでください:... ...' –

-1

ちょうどあなたがしようとしたものとし、それがどのように失敗したあなたのポストを更新だけ

user_text = input() 
cont = should_continue(user_input) 
+0

これはメソッドではなく、関数です。 – Anthon

+1

'continue'は予約済みのキーワードです。関数名には使用できません – Daniel

+0

@Daniel:ooops ... –

関連する問題