hi所有人都试图询问用户名,只能使用字母或数字或_。如果提供了其他东西,我需要再问一次。到目前为止,这就是我所拥有的,但当我尝试跑步时,它只是继续前进,而不是完成。所以在第一个问题之后,如果我输入用户名,比如";千斤顶";它应该只打印用户名:jack,但它只是不断地问代码中的第二个问题"请输入用户名(只有字母和数字(我该如何解决这个问题?"?
Username = input ("What is your username?")
while Username != "^[A-Za-z0-9]*$":
Username = input('Please enter a username(only letters and numbers)')
print("Username: ", Username)
可以有两种方法。
- 循环字符串并检查每个字符是否属于字母或数字范围。尽管不建议这样做,因为这会耗费时间和内存
- 使用CCD_ 1。这是一个简单的短,比以前更好
代码:
Username = input ("What is your username?")
while not Username.replace('_', '').isalnum(): #Edit: Removed _ as an invalid character
Username = input('Please enter a username(only letters and numbers)')
print("Username: ", Username)
对https://stackoverflow.com/a/71506891/18248018答案是用这句话代替while not Username.replace('_', '').isalnum():
让其他一切都一样。
这将允许用户名仍然包含下划线,如果这是您的意图的话。
.replace(old, new)
返回一个新字符串(保持原始字符串不变(,其中子字符串old
的所有实例都被字符串new
替换。这意味着上面修改后的代码行在一个相当于去掉下划线的Username输入的字符串上调用.isalnum()
,并检查是否所有剩余字符都是字母数字。
否则,.isalnum()
将拒绝包含下划线的输入。