处理不带''的字符串输入

时间:2019-04-20 03:15:04

标签: python-3.x

尝试在字符串后打印不正确,例如输入不带引号”

while True:
    t=eval(input("number "))
    if isinstance(t, str):
        print("bad")
    if TypeError: #trying to detect strings not input in ' ' format
        print("bad")

在控制台中输入“字符串”或字符串时,预期结果将显示“错误”。
 但是,当输入不带引号的字符串时,我的代码将中断。不确定如何检测不带引号的输入。

1 个答案:

答案 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。如果是这样,请停止该程序。如果没有,请告诉用户您有一个字符串,并且想要一个数字。

如果您有电话号码,很好,您可以继续进行下去。