我检查了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但是它可以正常工作来检查整数但不是字符串。
答案 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
始终存储字符串是否输入整数。