由於您的if
子句中的條件存在缺陷;該isupper
方法返回True
如果給定的字符串中的所有字符大寫:
>>> "UPPER".isupper()
True
>>> "UPPEr".isupper()
False
見documentation for str.isupper
:
返回True
如果str
所有套管字符大寫並沒有在str
中至少有一個裝入字符,否則爲False
。
(重點煤礦)
既然你在message
檢查與message.isupper(()
這將返回False
導致0
總和的所有時光。
而是與message.isupper()
上完整的郵件檢查,對每個字符爲基礎使用if
與if c.isupper()
爲每c
在message
:的事實
print("Capital Letters: ", sum(1 for c in message if c.isupper()))
你也可以利用該True
行爲像1
和False
像0
稍微減少下來,如果你想要:
print("Capital Letters: ", sum(c.isupper() for c in message))
或者,如果你喜歡功能性的方法,map
功能您輸入:
print("Capital Letters: ", sum(map(str.isupper, message)))
即使這些可能,主觀上看起來更好;他們通常比原來的方法更神祕(而且效率也稍低)。
可能因爲你的檢查是'如果message.isupper()'你的意思是檢查:'如果c.isupper()'? – alfasin
'sum(map(str.isupper,message))' –