2015-07-09 54 views
1

我做一些Python自學(非常初級)和我難倒這個練習,我一直在考慮 - 意味着檢查一個字符串有任何小寫字母:islower判斷()字符串 - 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循環

回答

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) 
+0

如果你真的想簡化,爲什麼不''word.islower()'? – ekhumoro

+0

@ekhumoro如果**所有**字符都是小寫字母,則返回'True',如果任何**字符都是小寫字母,則OP要返回'True'。 –

2

在你第一次去通過這個循環,你要麼打的if語句,返回true,或else語句,它返回False。你永遠不會到達第二個角色。

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 
0

您在第一個循環中直接返回您的函數。你所說的是

  1. 遍歷所有的字母
    1. 檢查這封信是小寫
    2. 我們就大功告成了!返回值

你可能想要做的,而不是什麼是

for x in word: 
    if x.islower(): 
     return True 
else: 
    return False 

這將尋找的第一個字母,如果小寫和發現任何會返回True

+0

這實現了錯誤的邏輯。它檢查**所有**字符是否小寫,OP要檢查**任何**字符是否小寫。 –

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。

0

如果你想要一個班輪:

print True if any(x.islower() for x in word) else False 
0
def is_lower(word): 
    for x in word: 
     if x.islower(): 
      return True 
    return False 

應該做的伎倆。基本上,循環所有字母,如果有小寫,則返回True(並因此退出整個函數)。如果在for循環結束時沒有返回,則返回False。

相關問題