如果用户输入是字符串,您如何告诉用户输入数字

时间:2014-09-28 21:02:21

标签: python string

 user_input = float(input("Please enter a multiplier!")
 if user_input == int:
     print " Please enter a number"
 else:
    for multiplier in range (1,13,1):
        print multiplier, "x", user_input, " = ", multiplier * user_input

程序将有效运行,对于用户输入的任何数字,结果将生效,但我希望知道一个允许用户在输入信件时询问号码的功能。

3 个答案:

答案 0 :(得分:2)

try/except循环中使用while

 while True:
    try:
        user_input = float(raw_input("Please enter a multiplier!"))
    except ValueError:
        print "Invalid input, please enter a number"
        continue # if we get here input is invalid so ask again
    else: # else user entered  correct input
        for multiplier in range (1,13,1):
            print multiplier, "x", user_input, " = ", multiplier * user_input
        break

答案 1 :(得分:1)

float之类的内容不是int。他们分开了类型。您可以使用float代表一个整数值,例如1.0,但它仍然是float

(另外,user_input == int不检查user_input是否为int,而是检查user_input是否实际上是类型 int;您想要isinstance(user_input, int)。但由于这仍然无法发挥作用,请让我们浏览一下......)


那么,您可以检查float是否具有整数值?好吧,你可以这样做:

if int(user_input) == user_input

为什么呢?由于1.01相同,即使它们不是同一类型,但1.11不相等。因此,如果float不是一个整数值,则将int截断为float会将值更改为不相等的值。

但这有问题。 10000000000000000.1本质上是一种有损的类型。例如,10000000000000000 等于float(在IEEE-854双重作为float类型的任何平台上,这几乎是所有平台),因为float无法处理足够的精确度来区分这两者。因此,假设你想要禁止第一个,你必须在之前转换为try


你怎么能这样做?检查Python中是否可能的最简单方法是raw_input它。您可以通过调用input而不是int将用户输入作为字符串获取,并且可以尝试使用int函数将其转换为user_input = raw_input("Please enter a multiplier!") try: user_input = int(user_input) except ValueError: print " Please enter a number" 。这样:

float

如果您需要最终将输入转换为int,则可以在将其转换为user_input = raw_input("Please enter a multiplier!") try: user_input = int(user_input) except ValueError: print " Please enter a number" else: user_input = float(user_input) 之后始终执行此操作:

{{1}}

答案 2 :(得分:-2)

您可以在python中使用assert-statment:

assert type(user_input) == int, 'Not a number'

如果type不是int,则应该引发AssertionError。控制接口的函数可以处理AssertionError,例如:通过重新启动对话框功能