2017-03-31 8 views
0

こんにちは、私はちょうど三つの入力を要求し、次の簡単なプログラムを作成し、かどうかをチェックする/これらの入力まで待機は番号があり、その後、それらの合計を出力します。Pythonの電卓 - 全てのPython初心者ここで入力検証

私の質問は:どのように私は私のコードをよりコンパクトにすることができますか?例えば、私は一つだけのコードのブロックの代わりに、3を使用することができますか?入力チェックをよりスマートにすることはできますか?

ご提案は大歓迎です。ありがとう。

print ("-ADD THREE NUMBERS-") 

while True: 
    a = input("Please enter a:") 
    try: 
     a = float(a) 
     break 
    except ValueError: 
     print ("'a' must be a number.") 

while True: 
    b = input("Please enter b:") 
    try: 
     b = float(b) 
     break 
    except ValueError: 
     print ("'b' must be a number.") 

while True: 
    c = input("Please enter c:") 
    try: 
     c = float(c) 
     break 
    except ValueError: 
     print ("'c' must be a number.") 

print(a+b+c) 
+0

あなたは問題を解決しましたか? – Giordano

答えて

0

私はあなたがユーザーに表示したいすべての「変数」(「A」、「B」、「C」)を保存するために、リストを使用することをお勧めします。
だからコードは、コンパクトなになった:

input_requested = ['a', 'b', 'c'] 
results = [] 

print ("-ADD THREE NUMBERS-") 
for input in input_requested: 
    while True: 
     user_input = input("Please enter '{}':".format(input)) 
     try: 
      results.append(float(user_input)) 
      break 
     except ValueError: 
      print ("'{}' must be a number.".format(input)) 

print(sum(i for i in results)) 

入力はあなたのコードのような例外をキャッチそれ以外の場合は、リストに保存します正しい場合。
は、すべての入力の合計を印刷するために、あなたが入力し、合計直接要素のリストに

sum(i for i in results) 

ループを使用することができ、最後に食べました。