如何检查字符串是否严格包含字母和数字?
跟随还不够?
def containsLettersAndNumber(input):
if input.isalnum():
return True
else:
return False
isAlnum = containsLettersAndNumber('abc') # Should return false
isAlnum = containsLettersAndNumber('123') # Should return false
isAlnum = containsLettersAndNumber('abc123') # Should return true
isAlnum = containsLettersAndNumber('abc123$#') # Should return true
Run Code Online (Sandbox Code Playgroud)
请注意,它必须同时包含字母和数字
仅使用字符串方法的最简单方法:
def containsLetterAndNumber(input):
return input.isalnum() and not input.isalpha() and not input.isdigit()
Run Code Online (Sandbox Code Playgroud)
input.isalnum如果 S 中的所有字符都是字母数字,则返回 true;
input.isalpha如果输入包含任何非字母字符,则
input.isdigit返回 false;如果输入包含任何非数字字符,则返回 false
因此,如果input包含任何非字母数字字符,则第一次检查为 false。如果not input.isalpha()我们知道input至少包含一个非字母字符 - 它必须是一个数字,因为我们已经检查过input.isalnum()。同样,如果not input.isdigit()为 True,那么我们知道input至少包含一个非数字字符,该字符必须是字母字符。
您可以循环并跟踪您是否找到了一个字母以及是否找到了一个数字:
def containsLetterAndNumber(input):
has_letter = False
has_number = False
for x in input:
if x.isalpha():
has_letter = True
elif x.isnumeric():
has_number = True
if has_letter and has_number:
return True
return False
Run Code Online (Sandbox Code Playgroud)
或者,一种更pythonic但速度较慢的方式:
def containsLetterAndNumber(input):
return any(x.isalpha() for x in input) and any(x.isnumeric() for x in input)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1066 次 |
| 最近记录: |