【发布时间】:2022-01-15 10:42:46
【问题描述】:
任何人都可以澄清为什么下面的程序返回带有空格的“J F K”而不是“JFK”?
string = "John Fitzgerald Kennedy"
initials = ""
for letter in string:
if letter == letter.upper():
initials += letter
print(initials)
另一方面,下面的程序返回没有空格的“JFK”,
string = "John Fitzgerald Kennedy"
initials = ""
for letter in string:
if letter != letter.lower():
initials += letter
print(initials)
谢谢!!!
编辑:啊...我在阅读答案后问这个真的很傻吗?在询问之前我应该尝试以下内容... 它返回“ohn itzgerald ennedy”
string = "John Fitzgerald Kennedy"
initials = ""
for letter in string:
if letter == letter.lower():
initials += letter
print(initials)
谢谢大家:)
【问题讨论】:
-
upper()不返回True。它返回符号的大写版本,然后将其与原始符号进行比较。空间没有两个版本,上面的.upper()/.lower()是无操作的。因此,space == space.upper(),此外,space == space.lower()是True,space != space.lower()是False。 -
您正在检查将字符串转换为大写是否返回与原始字符串相同的字符串。对于没有 大小写的字符,这将始终为真。这应该不足为奇。你期望
" ".upper()会返回什么? -
想一想……空格的大写版本是什么,它与非大写版本的空格相比如何?每张支票比较的是什么?
-
无论如何,这似乎是一个XY problem。您似乎实际上试图弄清楚一个字符是否是字母。已经有这方面的功能,但你实际上可以检查
if letter.upper() == letter.lower()