gpt4 book ai didi

python - 为什么这段代码只有在输入全是大写字母时才有效?

转载 作者:太空狗 更新时间:2023-10-30 00:43:16 27 4
gpt4 key购买 nike

经过一段时间的研究,我一直无法找到为什么这段代码在句子中全部大写时计算大写字母,但如果 "0" 则计算大写字母我要输入一个包含任何小写字母的句子,例如:"Hello World"

message = input("Enter your sentence: ")

print("Capital Letters: ", sum(1 for c in message if message.isupper()))

最佳答案

因为您的 if 子句中的条件有缺陷; isupper 方法返回 True 如果给定字符串中的所有 字符都是大写的:

>>> "UPPER".isupper()
True
>>> "UPPEr".isupper()
False

参见 documentation for str.isupper :

Return True if all cased characters in str are uppercase and there is at least one cased character in str, False otherwise.

(强调我的)

由于您正在使用 message.isupper(() 检查 message 这将一直返回 False 导致总和0

与其使用 message.isupper() 检查完整消息,不如使用 if c.isupper() 在每个字符的基础上使用您的 if 对于 message 中的每个 c:

print("Capital Letters: ", sum(1 for c in message if c.isupper()))

您还可以利用 True1False0 这样的事实来稍微如果你愿意,可以把它剪下来:

print("Capital Letters: ", sum(c.isupper() for c in message))

或者,如果您喜欢函数式方法,请将函数映射到您的输入:

print("Capital Letters: ", sum(map(str.isupper, message)))

尽管这些可能在主观上看起来更好;它们通常比原始方法更神秘(而且效率也稍低)。

关于python - 为什么这段代码只有在输入全是大写字母时才有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41620384/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com