我正在尝试创建一个演示程序,用于检查用户输入的用户名并验证它是否包含来自A-Z或a-z的字母。
user_boolean = False
while user_boolean == False:
username = input("What is your name?")
if [username contains letters] == False:
username_reattempt = input("Your name contains numbers or unpermitted characters. Please type your name correctly. >> ")
if username_reattempt[contains letters] == True:
user_boolean == True
else:
user_boolean == True
现在,您可以看到user_boolean设置为false,而当它为false时,此while循环将继续运行。如果用户名包含不是A-Z或a-z的字符,那么它将要求用户重新键入其详细信息。如果他们第二次尝试成功,他们将退出while循环,程序将继续进入主要部分。
现在,我已经研究了不同的方法来做到这一点,到目前为止我还没有找到一个方法...之前,我找到了.isdigit()方法,但这是整数,而不是字符串。
有办法吗?
答案 0 :(得分:1)
由于您不熟悉正则表达式,因此这是一个非常简单的选择:
如果您想仅将某些字符列入白名单(可能允许不仅仅是字母的字符),那么您可能希望使用一组:
def containsOnly(s, whitelist):
whitelist = set(whitelist)
for char in s:
if char not in whitelist:
return False
return True
此功能可用于您的目的,如下所示:
In [7]: containsOnly('asdfA5', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
Out[7]: False
In [8]: containsOnly('asdfA', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
Out[8]: True
In [9]: containsOnly('asdfA5', '5abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
Out[9]: True