如何将输入中的字符串值作为无效?

时间:2015-10-04 06:08:18

标签: python python-2.7

我一直在玩字符串,我发现当一个字符串输入到输入函数时,它会产生错误。

我想知道如果为print "invalid"变量键入字符串,input如何。我想以最简单的方式做到这一点,函数应该是输入而不是raw_input,我不想使用tryexcept因为这会使代码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"

3 个答案:

答案 0 :(得分:2)

Python 2.7支持inputraw_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获得的字符串转换为intfloat(以及捕获表示非数字输入的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")