如果 Python 中有特殊字符,如何使用循环拒绝用户输入

How to Reject User Input with Loop if it has Special Characters in Python

我正在尝试在 Python 中编写一个程序,用户在其中输入答案,如果答案少于 5 个字符或具有特殊字符,如 !、@、#、$,它应该得到被踢,用户再次尝试。

输入 ),(,*,&,^ 没关系,我就是不能输入 !,@,#,$。

我想知道是否有人可以为我解释比我可怜的谷歌搜索发现的更好。

谢谢

这是我的代码:

while True:
    print("Without entering any special characters !, @, #, $")
    answer = input("Please enter an answer >= 5 characters: ")
    if len(answer) >= 5:
        print("Your answer was greater than or equal to 5 characters!")
        print("Success!")
        break
    else:
        print("Please read directions and try again.")

您可以使用 any 来确定 answer 中的任何字符是否在 ['!','@','#','$'] 中。

if len(answer) >= 5 and not any(i in ['!','@','#','$'] for i in answer):

像这样:

word='yaywords@'
badchars='!@#$'

if len(list(set(list(badchars)) & set(list(word)))) == 0:
    'yay it worked'

可以将答案中的字符集与设置的坏字符取交集,看答案中是否有坏字符:

if len(answer) >= 5 and not set(answer) & set('!@#$'):