当'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')
答案 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!")