当前位置:  开发笔记 > 编程语言 > 正文

为什么此代码仅在输入全部为大写字母时才起作用?

如何解决《为什么此代码仅在输入全部为大写字母时才起作用?》经验,为你挑选了1个好方法。

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

message = input("Enter your sentence: ")

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

Jim Fasaraki.. 9

因为你的if条款中的条件有缺陷; 如果给定字符串中的所有字符都是大写,则isupper返回该方法:True

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

请参阅以下文档str.isupper:

返回True 如果所有套管字符str都是大写的,并至少有一个在套管字符str,False否则.

(强调我的)

由于你正在检查message,message.isupper(()这将返回False所有时间导致总和0.

相反,与完整的邮件检查message.isupper(),使用if在每个字符的基础上与if c.isupper()每一个cmessage:

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

你也可以利用这一事实的优势True就像1False喜欢0稍微减少下来,如果你想:

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

或者,如果您喜欢功能方法,map则输入的功能如下:

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

即使这些主观上可能看起来更好; 它们通常比原始方法更神秘(效率也略低).



1> Jim Fasaraki..:

因为你的if条款中的条件有缺陷; 如果给定字符串中的所有字符都是大写,则isupper返回该方法:True

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

请参阅以下文档str.isupper:

返回True 如果所有套管字符str都是大写的,并至少有一个在套管字符str,False否则.

(强调我的)

由于你正在检查message,message.isupper(()这将返回False所有时间导致总和0.

相反,与完整的邮件检查message.isupper(),使用if在每个字符的基础上与if c.isupper()每一个cmessage:

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

你也可以利用这一事实的优势True就像1False喜欢0稍微减少下来,如果你想:

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

或者,如果您喜欢功能方法,map则输入的功能如下:

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

即使这些主观上可能看起来更好; 它们通常比原始方法更神秘(效率也略低).

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有