我正在做一些Python自学(非常初学者)并且在我已经给出的这个练习上感到难过 - 意在检查一个字符串是否有任何小写字母:
def is_lower(word):
for x in word:
if x.islower():
return True
else:
return False
is_lower("Cat")
返回False
is_lower("cAt")
返回True
和is_lower("caT")
返回True
我不确定为什么我会得到这些差异 - 它似乎只是测试了这个词的第一个字母,我不知道为什么。我认为它应该遍历单词的每个字母,因为它是for循环
答案 0 :(得分:3)
在阅读所有字符之前,您需要保持循环。
for x in word:
if x.islower():
# We found *one* lower case letter, so return True
return True
# We found *no* lower case letters, so return False
return False
或者,您可以简化:
return any(x.islower() for x in word)
答案 1 :(得分:2)
第一次通过该循环时,您可以点击返回True的if语句,也可以点击返回False的else语句。你永远不会到第二个角色。
def is_lower(word):
for x in word:
if x.islower():
#Found a lowercase letter!
return True
#Okay, now we're done with the for loop.
#We have not encountered any lower case letters
return False
答案 2 :(得分:0)
在第一个循环中直接从函数返回。你在说什么
您可能想要做的是
for x in word:
if x.islower():
return True
else:
return False
这将查找第一个字母,如果小写和任何被发现它将返回True
答案 3 :(得分:0)
这与编程控制流程有关。 当函数命中return语句时,它将停止该函数并将该值返回到函数调用的位置。
对于单词Cat
,您将使用for x in word:
语句逐个循环返回单词,首先检查第一个字母C
,该字母不低,所以它返回False
函数停止,其他字母不会被检查。
对于单词cAt
也是如此,它检查第一个字母c
是小写,达到return True
并且函数停止。
而是使用像以下一样构建的函数:
for x in word:
if x.islower():
return True
return False
这里将检查每个字母是否更低或更低,如果其中一个更低,它将返回True。只有在最后没有一个字母低于它时,它才会返回False。
答案 4 :(得分:0)
如果你想要一个单行:
print True if any(x.islower() for x in word) else False
答案 5 :(得分:0)
def is_lower(word):
for x in word:
if x.islower():
return True
return False
应该做的伎俩。基本上,遍历所有字母,如果有小写,则返回True(从而退出整个函数)。如果在for循环结束时没有返回,则返回False。