我正试图完成一项任务,即确保一个字符串中的所有字符都符合以下条件。
对于大多数字符串,函数都能正常工作;但是,我返回的是一个假的 False
当呈现0时。
这个问题被定位在for循环(for character in string:
),如输出所示。
def valid_product_code(string):
if len(string) % 4 == 0:
print("String is divisible by 4")
if "A1" in string:
print("A1 is contained within string")
for character in string:
print(character)
if character == character.lower():
print("Character is a Lowercase")
return False
elif character == ("!"or "." or "," or ":"):
print("Character is punct")
return False
else:
return True
else:
return False
else:
return False
print(valid_product_code("0O3LG6EWN7AA1NI596LCVBRZ"))
代码的输出如下。
String is divisible by 4
A1 is contained within string
0
Character is a Lowercase
False
你需要使用 if character.islower():
不 if character == character.lower():
因为 '0'.lower()=='0'
因此,如果语句(if character == character.lower():
)将始终返回 true
如果你的字符串包含任何数字
简而言之,答案是 '0'.lower() == '0'
. 与其检查坏的字符 (如小写字母或标点符号),不如在 Python 中描述成为一个好的字符意味着什么。
在本例中,作为一个好字符的意思就是
'A' <= character <= 'Z' or '0' <= character <= '9'
你所做的事情是不对称的。而不是使用 if character == character.lower():
,使用 .islower()
.
.islower()
返回 True
当字符串中没有大写字母而至少有一个小写字母时。这和所有字符都是字母是不一样的。