没有''处理字符串输入

问题描述 投票:0回答:1

尝试在字符串输入后输入不正确,例如没有引用''

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”。 但是,当输入不带引号的字符串时,我的代码会中断。不确定如何检测没有引号的输入。

python-3.x
1个回答
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。如果是这样,请停止该程序。如果没有,告诉用户你有一个字符串,你想要一个数字。

如果你有一个很好的数字,你可以继续前进。

© www.soinside.com 2019 - 2024. All rights reserved.