Python 3仅允许一种输入数据类型

时间:2020-07-02 06:06:10

标签: python python-3.x input types

当'name'获得任何非str的数据类型时,我想使该程序打印“仅支持str类型”。我该更改什么代码?

while True:
name =(input("Whats ur name?"))
if name == 'Richard':
    print('ok')
    break
elif name == "gosha":
    print('FEUER FREI! "BANG BANG BANG BANG"')
else:
    print('denied')

4 个答案:

答案 0 :(得分:0)

您可以在名称类型上进行分支,例如:

if type(name) is not str:
    print('Only str type supported')

if not isinstance(name, str):
    print('Only str type supported')

但是正如其他人指出的那样,input()将始终返回str
https://docs.python.org/3/library/functions.html#input

答案 1 :(得分:0)

据我所知,所有输入都是一个字符串,但是我知道您想要的是在输入中仅接收字母而没有数字。在这种情况下,您可以检查字符串的每个元素以查看它们是否为数字,如果找到,则返回错误消息。

要检查它,您必须使用:

for c in name:
    if c.isdigit():
        print("Only str type supported")
        break

这将遍历输入字符串,并检查其中的任何元素是否为数字。

编辑:您可以只使用name.isalpha()来检查所有字符是否都是字母。会更容易阅读并消除不必要的循环。

答案 2 :(得分:0)

while True:
    name =(input("Whats  ur name?"))
    check = True
    for ele in name:
        try:
            fl = float(ele) 
            nu = int(ele)
            print("Only str type supported")
            check = False
        except:
            pass
    if check:
        if name == 'Richard':
            print('ok')
            break
        elif name == "gosha":
            print('FEUER FREI! "BANG BANG BANG BANG"')
        else:
            print('denied')

它将检查名称的各个字符,并尝试将其转换为float或int。如果可以转换一个值,它将失败,并引发错误并再次要求输入名称

答案 3 :(得分:-1)

您当前的问题很难回答。输入函数将始终返回字符串。该字符串可以是“ 1”,也可以是“ 3.14159”,也可以是空的“”,但始终是字符串。

当您说只希望它支持字符串类型时,也许是想检查给定的输入是否可以转换为int,float或为空?

如果是这种情况,请尝试使用try和except并依靠强制转换来int或float无法“证明”,这是通过消除其成为其他类型的能力来实现的字符串。

根据需要添加其他类型检查,以使您的逻辑更强大。

执行以下操作:

while True:
    name = input("Whats ur name? ")
    try:
        float(name)
        int(name)
        print("I only support strings that are names")
        break
    except ValueError:
        pass
    print("It's not a float or an int so it's a string!")