2015-01-31 4 views
2

Я написал калькулятор BMI, но я хотел бы, чтобы там был способ обеспечить, чтобы пользователь вводил только числа, поэтому, если что-то еще было введено, вопрос должен был быть задан снова. Вот некоторые из моего кода.Как убедиться, что пользователь вводит число?

#Ask whether metric or imperial is to be used and ensures no typing errors 
measure = input("Would you like to use Metric or imperial measurements? Please type i for imperial or m for metric \n") 

while(measure != "i") and (measure != "m"): 
    measure =input("Please type a valid response. Would you like to use Metric or imperial measurements? Please type i for imperial or m for metric") 

#Asks the users weight 
if(measure == "i"): 
    weights = input("Please type in your weight in stones and pounds- stones=") 
    weightlb = input("- pounds=") 
    weights = int(weights) 
    weightlb = int(weightlb) 
    weight = (weights*14)+weightlb 

elif(measure == "m"): 
    weight = input("Please type in your weight in kilograms=") 
+0

№ Вопрос. Ассистент хочет знать, как убедиться, что пользователь вводит число. Это все. –

ответ

2

Вы можете просто использовать попытку, за исключением цикла плюс время цикла. Вот что я имею в виду:

intweight = 0 
while True: 
    try: 
     weight = float(input()) 
    except ValueError: 
     print "Please enter a number" 
    else: 
     break 
     intweight = weight 

Цикл while заставит пользователя ввести строку, пока она не будет иметь номера. Программа попытается преобразовать строку в число. Если есть буквы, будет активирована другая часть. Если преобразование выполнено успешно, часть else активируется, прерывая цикл. Я надеюсь, это поможет вам!

+0

Это хорошо сочетается с философией Python: [Легче просить прощения, чем разрешение] (https://docs.python.org/2/glossary.html#term-eafp). Я бы обернул это функцией, поскольку это используется в нескольких частях программы. –

+0

Извините, немного новичок, я просто вставляю это под часть килограммов? спасибо за вашу помощь :) – nitrogirl

+0

это вместо вашего 'while'-loop, где вы запрашиваете' input («Please ... metric») ' – RvdBerg

Смежные вопросы