我一直在玩字符串,我发现当一个字符串输入到输入函数时,它会产生错误。
我想知道如果为print "invalid"
变量键入字符串,input
如何。我想以最简单的方式做到这一点,函数应该是输入而不是raw_input,我不想使用try
或except
因为这会使代码I&#39复杂化; m计划创建。
testing_variable = input ("enter a number:")
# if a string is entered print invalid
if testing_variable == "":
# the "" is what im using if a string is entered and im having a hard time solving this
#Tips or advice of any coversion of the input would be helpful
print "invalid"
答案 0 :(得分:2)
Python 2.7支持input
和raw_input
。
因此,对于input
,您需要使用引号包装输入。如果您想避免这种情况,请使用raw_input。
raw_input示例:
>>> raw_input('hi ')
hi hey
'hey'
如果您希望强制用户始终输入一个数字,那么您可以尝试将其包装在一起,除非这样:
try:
i = int(raw_input("Enter a number: "))
except:
print("you did not enter a number")
答案 1 :(得分:2)
在Python 2中使用input
函数通常是一个坏主意。它等同于eval(raw_input())
,因此希望用户输入有效的Python表达式。如果他们输入的内容不是有效的Python,那么您总会收到错误。
虽然您可以捕获各种异常并将其转换为有用的错误消息,但更好的方法是使用raw_input
并对您希望能够处理的特定输入类型进行自己的验证。如果您只想接受数字,请尝试将您从raw_input
获得的字符串转换为int
或float
(以及捕获表示非数字输入的ValueError
个例外)。为了达到理想的打印效果"invalid"
:
try:
result = int(raw_input("enter a number"))
except ValueError:
print "invalid"
这是解决问题的最恐怖的方式。如果由于某种原因您不想使用异常处理,您可以保存从raw_input
获得的字符串并首先进行分析,以确保它在转换为数字之前只包含您期望的字符。对于基数10整数,这不是太难,因为只需要检查数字,字符串上的isdigit
方法将检查它是否只包含数字字符:
str_input = raw_input("enter a number")
if str_input.isdigit():
result = int(str_input)
else: # string contains non-digit characters
print "invalid"
如果你想支持浮点数,验证输入字符串要复杂得多,因为isdigit
没有方便的功能可以为你检查所有字符。如果你真的想要,你可以这样做,但我强烈建议你使用上面显示的异常捕获代码样式,只需将字符串传递给float
即可查看它是否有效。
答案 2 :(得分:1)
这是我认为最好的方式:
testing_variable = input ("enter a number:")
try:
number_var = int(testing_variable)
print(number_var)
except ValueError:
print("Invalid")
不使用尝试,您可以执行以下操作:
testing_variable = input ("enter a number:")
if not testing_variable.isdigit():
print("Invalid")