2017-03-30 5 views
1

Wie kann ich den Code begrenzen die Eingabe des Benutzers auf Integer. Der Code funktioniert jetzt perfekt, aber ich will es, anstatt mir einen Fehler zu geben, wenn es einen String eingibt, es wird nur eine Ausnahme machen.Limit Python Eingabe in int

def miles_to_km(): 
     miles=eval(input('Amount of miles: ')) 
     result= float(miles*1.609344) 
     print(miles, 'Miles are equivalent to ', result, 'Kilometers') 
     print('----------------------------------------------------------------') 
def km_to_miles(): 
     km=eval(input('Amount of kilometers: ')) 
     result= float(km*0.62137119) 
     print(km, 'Kilometers are equivalent to ', result, 'Miles') 
     print('----------------------------------------------------------------') 
def pounds_to_kg(): 
     pounds=eval(input('Amount of pounds: ')) 
     result=float(pounds/2.2046226218) 
     print(pounds, 'Pounds are equivalent to ', result, 'Kilograms') 
     print('----------------------------------------------------------------') 
def kg_to_pounds(): 
     kg=eval(input('Amount of kilograms: ')) 
     result=float(kg*2.2046226218) 
     print(kg, 'Kilograms are equivalent to ', result, 'Pounds') 
     print('----------------------------------------------------------------') 
def C_to_F(): 
    temp=eval(input('Temperature in Celsius: ')) 
    result= float((temp*1.8)+32) 
    print(temp, '°C are equivalent to ', result, '°F') 
    print('----------------------------------------------------------------') 
def F_to_C(): 
    temp=eval(input('Temperature in Fahrenheit ')) 
    result= float((temp-32)/1.8) 
    print(temp, '°F are equivalent to ', result, '°C') 
    print('----------------------------------------------------------------') 
def mph_to_kph(): 
     mph=eval(input('Amount of Miles per hour: ')) 
     result= float(mph*1.609344) 
     print(mph, 'Miles/Hour are equivalent to ', result, 'Kilometers/Hour') 
     print('----------------------------------------------------------------') 
def kph_to_mph(): 
     kph=eval(input('Amount of Kiometers per hour: ')) 
     result= float(kph*0.62137119) 
     print(kph, 'Kilometers/Hour are equivalent to ', result, 'Miles/Hour') 
     print('----------------------------------------------------------------') 
def exit_function(): 
    print('Thanks for using the conversion program.') 
    print('----------------------------------------------------------------') 
    import sys 
    sys.exit() 


def menu(): 
    print('----------------------------------------------------------------') 
    print('Welcome to the unit conversion program. Please select an option.') 
    print('1. Miles to Kilometers') 
    print('2. Kilometers to miles') 
    print('3. Pounds to Kilograms') 
    print('4. Kilograms to Pounds') 
    print('5. Celsius to Fahrenheit') 
    print('6. Fahrenheit to Celsius') 
    print('7. Miles/hour to Kilometers/hour') 
    print('8. Kilometers/hour to Miles/Hour') 
    print('9. Exit') 

screen=True 

while screen: 
    menu() 
    choice=eval(input('Enter option: ')) 
    if choice==1: 
     miles_to_km() 
    elif choice==2: 
     km_to_miles() 
    elif choice==3: 
     pounds_to_kg() 
    elif choice==4: 
     kg_to_pounds() 
    elif choice==5: 
     C_to_F() 
    elif choice==6: 
     F_to_C() 
    elif choice==7: 
     mph_to_kph() 
    elif choice==8: 
     kph_to_mph() 
    elif choice==9: 
     exit_function() 
    else: 
     print('Try a number between 1 and 9!') 

Antwort

0

können Sie die Eingabe mit try Anweisung konvertieren.

while True: 
    menu() 
    choice = input('Enter option: ') 
    try: 
     choice = int(choice) 
    except ValueError: 
     print('invaild choice.') 
     print('Try a number between 1 and 9!') 
     continue 
    if choice==1: 
     miles_to_km() 
    elif choice==2: 
     km_to_miles() 
    elif choice==3: 
     pounds_to_kg() 
    elif choice==4: 
     kg_to_pounds() 
    elif choice==5: 
     C_to_F() 
    elif choice==6: 
     F_to_C() 
    elif choice==7: 
     mph_to_kph() 
    elif choice==8: 
     kph_to_mph() 
    elif choice==9: 
     exit_function() 
    else: 
     print('Try a number between 1 and 9!') 
+0

danke XD, ich habe gerade den festen Code als Antwort gepostet – lexdy26

0
while screen: 
    menu() 
while True: 
     try: 

    choice=eval(input('Enter option: ')) 
    if choice==1: 
     miles_to_km() 
    elif choice==2: 
     km_to_miles() 
    elif choice==3: 
     pounds_to_kg() 
    elif choice==4: 
     kg_to_pounds() 
    elif choice==5: 
     C_to_F() 
    elif choice==6: 
     F_to_C() 
    elif choice==7: 
     mph_to_kph() 
    elif choice==8: 
     kph_to_mph() 
    elif choice==9: 
     exit_function() 
    else: 
     print('Try a number between 1 and 9!') 
0

Eingang() wird immer einen String zurück. So könnte man eine Hilfsfunktion wie folgt schreiben:

def input_int(message): 
    while True: 
     try: 
      number = int(input(message)) 
      return number 
     except ValueError: 
      print('Invalid number string, try again') 
      continue 

Eine analoge Helfer input_float könnte usw.

Es besteht kein Zweifel ein Python-Paket mit mehr Schnickschnack, wenn Sie sie benötigen.