检查用户输入是否是Python中的str

时间:2014-05-27 13:16:12

标签: python

我检查了Stack Overflow上的各种问题,但每个逻辑都缺少一个问题。让我演示使用Python:

while True:
    user_input = raw_input()
    if type(user_input) == str:
        print 'ERROR'
    else:
        print 'BINGO'

此外,我们不能使用input()代替raw_input(),因为它会给出错误:Traceback(最近一次调用最后一次):

File ".\test.py", line 3, in <module>
    user_input = int(input())
  File "<string>", line 1, in <module>
NameError: name 'asdf' is not defined

这里的问题是raw_input将用户输入转换为字符串,因此它总是打印'ERROR',如果我将第二行更改为

user_input = int(raw_input)

然后,它给出了一个错误:

Traceback (most recent call last):
  File ".\test.py", line 3, in <module>
    user_input = int(raw_input())
ValueError: invalid literal for int() with base 10: 'asdf'

我尝试使用try和except但是它可以正常工作来检查整数但不是字符串。

2 个答案:

答案 0 :(得分:3)

你完全倒退 - raw_input “将用户输入转换为字符串” - 用户输入是一个字符串开头!它是input将其转换为其他内容。

如果您想使用raw_input,您可以假设您将获得一个字符串,您需要自己将其转换为int。如您所见,如果字符串不表示整数,则会失败,但您可以轻松捕获该错误:

while True:
    user_input = raw_input()
    try:
        user_input_as_integer = int(user_input)
        print 'BINGO'
    except ValueError:
        print 'ERROR'

答案 1 :(得分:-1)

# first store the value to a variable
user_input = raw_input('>')
try:
    if int(user_input):
        print "User entered %d is integer" % int(user_input)
except ValueError: 
    # check whether the user entered string or not
    print "User entered %s is a string" % user_input

raw_input始终存储字符串是否输入整数。