设置“of”以确保变量是数字而不是字母/符号

时间:2013-01-04 01:11:51

标签: python if-statement

如何创建“if”语句以确保输入变量是数字而不是字母?

radius = input ('What is the radius of the circle? ') 

#need if statement here following the input above in case user
#presses a wrong key    

感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

假设您正在使用python2.x:我认为更好的方法是将输入作为raw_input。然后你知道这是一个字符串:

r = raw_input("enter radius:")  #raw_input always returns a string

上述语句的python3.x等价物是:

r = input("enter radius:")      #input on python3.x always returns a string

现在,从中构建一个浮点(或尝试):

try:
    radius = float(r)
except ValueError:
    print "bad input"

关于python版本兼容性的一些进一步说明

在python2.x中,input(...)相当于eval(raw_input(...)),这意味着你永远不会知道你将从中返回什么 - 你甚至可以获得SyntaxErrorinput内!

关于在python2.x上使用 input 的警告

作为旁注,我建议的程序使您的程序免受各种攻击。考虑一下用户输入的日期有多糟糕:

__import__('os').remove('some/important/file')

而不是提示时的数字!如果您在python2.x上使用eval input eval,或明确使用some/important/file,那么您刚刚删除了{{1}}。糟糕。

答案 1 :(得分:3)

试试这个:

if isinstance(radius, (int, float)):
    #do stuff
else:
    raise TypeError  #or whatever you wanna do