尝试在字符串后打印不正确,例如输入不带引号”
while True:
t=eval(input("number "))
if isinstance(t, str):
print("bad")
if TypeError: #trying to detect strings not input in ' ' format
print("bad")
在控制台中输入“字符串”或字符串时,预期结果将显示“错误”。
但是,当输入不带引号的字符串时,我的代码将中断。不确定如何检测不带引号的输入。
答案 0 :(得分:0)
您似乎想从命令行使用一个数字,并试图检查是否收到了字符串。
简而言之, 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
。如果是这样,请停止该程序。如果没有,请告诉用户您有一个字符串,并且想要一个数字。
如果您有电话号码,很好,您可以继续进行下去。