我对python还比较陌生(实际上是在一般情况下编写代码),但我基本上掌握了摆在我面前的东西。我试图创建一个只接受整数的输入,因此我组合了以下函数:
def askFor(request):
"""Program asks for input, continues to ask until an integer is given"""
num = ' '
while (isinstance(num, int) == False):
num = input(request)
else:
return num
当我输入一个数字时,它工作得很好,但是任何其他东西都会破坏它,而不是循环它。我是缺少了一个元素,还是我只是最好的选择
^{pr2}$
问题是
input()
返回作为python表达式计算的原始用户输入。因此,当你在控制台上输入类似“someinput”的内容时,会发生以下情况:您真正想要做的是使用
raw_input()
,这将返回一个代表用户输入的字符串。由于现在从控制台接收字符串,因此需要某种方法检查字符串是否为int(因为isinstance将始终返回字符串)现在要确定字符串是否是一个数字,可以使用isdigit()之类的东西,但是要小心,这个函数将验证任何只包含数字的字符串(因此0393是有效的)。在
以下是需要进行的更正:
在python2中使用}将尝试计算给定的字符串,这很危险。在
raw_input
是比较安全的,因为它总是返回一个字符串,而{这是因为
input()
在非整数输入上失败(这与input()
在输入的字符串上调用eval()
有关(请参见python builtins)。在raw_input()
没有。(实际上,input()
调用raw_input()
)试试这个:
isdigit()
函数检查字符串中的每个字符是否为数字(“0”-“9”)相关问题 更多 >
编程相关推荐