Python 如何确保用户输入一个数字?

Python 如何确保用户输入一个数字?,python,validation,python-3.x,user-input,Python,Validation,Python 3.x,User Input,我已经写了一个体重指数计算器,但我希望有一种方法可以确保用户只键入数字,这样,如果输入了其他内容,就会再次询问问题。这是我的一些代码 #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

我已经写了一个体重指数计算器,但我希望有一种方法可以确保用户只键入数字,这样,如果输入了其他内容,就会再次询问问题。这是我的一些代码

#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=")
这就是为什么:


您可以简单地使用try,除了循环加上while循环。我的意思是:

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

while循环将强制用户输入字符串,直到它只有数字。程序将尝试将字符串转换为数字。如果有字母,则“除外”部分将被激活。如果转换成功,else部分将激活,从而中断循环。我希望这对你有帮助

这与Python的哲学是一致的。我会把它包装在一个函数中,因为这个函数在程序的几个部分都有使用。对不起,有点新手,我是不是要把它粘贴在这个部分下面?感谢您的帮助:)这将取代您请求输入的
while
-循环(“请…公制”)您可以使用
while True
,而不是
integer=1
intweight=weight
之后使用
break
,但while循环确保选择公制或英制,这和数字无关吗?例如,如果用户键入字母或符号,我希望它重新询问用户的重量。否。询问者只是想知道如何确保用户键入一个数字。这就是全部。
intweight = 0
while True:
    try: 
        weight = float(input())
    except ValueError:
        print "Please enter a number"
    else:
        break
        intweight = weight