尝试在字符串输入后输入不正确,例如没有引用''
while True:
t=eval(input("number "))
if isinstance(t, str):
print("bad")
if TypeError: #trying to detect strings not input in ' ' format
print("bad")
当在控制台中输入'string'或字符串时,预期的结果是打印“bad”。 但是,当输入不带引号的字符串时,我的代码会中断。不确定如何检测没有引号的输入。
您似乎想要从命令行使用一个数字,而您正试图检查是否收到了一个字符串。
简单来说,eval()
会评估它的论点,好像它是一些公认的python代码。 See documentation。如果你传递字符串,eval正在尝试评估string
,这不是真正的python代码。因此,抛出错误。如果你通过'string'
,eval认为它是一个带引号的字符串。
你可能需要的是:
while True:
t = input("number ")
try:
my_value = int(t)
except:
if t == 'quit':
break
else:
print('I didnt receive a string. Please try again');
continue
print('Great! Received a number')
这样,您就会要求用户提供信息。你会得到一个字符串。然后,您尝试将其转换为整数。如果失败,您可以检查用户是否提供了quit
。如果是这样,请停止该程序。如果没有,告诉用户你有一个字符串,你想要一个数字。
如果你有一个很好的数字,你可以继续前进。