2017-03-31 4 views
0

Hallo alle ein Python-Neuling hier, ich habe gerade das folgende einfache Programm erstellt, das nach drei Eingaben fragt, prüft, ob/bis diese Eingaben Zahlen sind, und dann ihre Summe ausgibt.Python Rechner - Eingabe Validierung

Meine Frage ist: Wie kann ich meinen Code kompakter machen? ZB kann ich nur einen Block von Code anstelle von drei verwenden? Kann ich die Eingabeüberprüfung intelligenter machen?

Alle Vorschläge sind willkommen. Vielen Dank.

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

Haben Sie das Problem gelöst? – Giordano

Antwort

0

Ich schlage vor, eine Liste zu verwenden, um all „Variablen“ (‚a‘, ‚b‘, ‚c‘) zu speichern, die Sie für den Benutzer angezeigt werden sollen.
So wurde der Code kompakteren:

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)) 

Wenn die Eingabe speichert sie in einer Liste korrekt ist, da sonst die Ausnahme wie Ihr Code fangen.
aß das Ende, um die Summe aller Eingänge zu drucken, Sie

sum(i for i in results) 

welche Schleife auf der Liste der Eingänge und Summe direkt die Elemente nutzen können.