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
程序将有效运行,对于用户输入的任何数字,结果将生效,但我希望知道一个允许用户在输入信件时询问号码的功能。
答案 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.0
和1
相同,即使它们不是同一类型,但1.1
和1
不相等。因此,如果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,例如:通过重新启动对话框功能