1

How can i make the code limit the input of the user to integers. The code right now works perfect but i want it to instead of giving me an error when it inputs a String, it will just make an exception.

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

3 Answers 3

1

input() will always return a string. So you could write a helper function like this:

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

An analogous helper could input_float, etc.

There is no doubt a Python package with more bells and whistles, if you need them.

Sign up to request clarification or add additional context in comments.

Comments

1

you could convert the input with try statement.

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

1 Comment

thanks XD, i just posted the fixed code as an answer
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!')

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.