Jak*_*ann 5 python string python-3.x
经过一段时间的研究,我一直无法找到为什么这个代码在它们全部大写时会在句子中计算"0"大写字母,但是如果我要输入一个包含任何小写字母的句子,那么它将计算大写字母,例如作为:"Hello World".
message = input("Enter your sentence: ")
print("Capital Letters: ", sum(1 for c in message if message.isupper()))
Run Code Online (Sandbox Code Playgroud)
因为你的if条款中的条件有缺陷; 如果给定字符串中的所有字符都是大写,则isupper返回该方法:True
>>> "UPPER".isupper()
True
>>> "UPPEr".isupper()
False
Run Code Online (Sandbox Code Playgroud)
请参阅以下文档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()))
Run Code Online (Sandbox Code Playgroud)
你也可以利用这一事实的优势True就像1和False喜欢0稍微减少下来,如果你想:
print("Capital Letters: ", sum(c.isupper() for c in message))
Run Code Online (Sandbox Code Playgroud)
或者,如果您喜欢功能方法,map则输入的功能如下:
print("Capital Letters: ", sum(map(str.isupper, message)))
Run Code Online (Sandbox Code Playgroud)
即使这些主观上可能看起来更好; 它们通常比原始方法更神秘(效率也略低).
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |