【发布时间】:2021-10-10 09:06:28
【问题描述】:
我想知道列表中的所有单词是否全部大写,即所有字母字符都大写。
我尝试了一个简单的字符串来理解isupper()的行为:
>>> 'FDSFS BBIBIFBIBWEF ASDASD 112,32:/'.isupper()
True
所以我把那句话中的单词分成列表:
>>> sent = ['FDSFS','BBIBIFBIBWEF','ASDASD', '112','32:/']
>>> all([word.isupper() for word in sent])
False
所以我检查了 all() 包含的参数列表:
>>> [word.isupper() for word in sent]
[True, True, True, False, False]
奇怪的是,isupper() 对于不包含字母的字符串(仅由数字和特殊字符组成)返回 False,但如果这些字符串甚至包含一个大写字符,则返回 True:
>>> '123'.isupper()
False
>>> '123A'.isupper()
True
>>> '123?A'.isupper()
True
>>> '123?'.isupper()
False
>>> ''.isupper()
False
Q1.isupper() 的这种行为背后是否有任何设计决策?
Q2.我怎样才能以最 Pythonic 的方式实现我想做的事情和最小的方式? (也许有任何其他函数只检查输入字符串中的所有字母单词是否都是大写字母,并且根本不关心特殊字符、数字和空字符串?还是我必须从头开始写一个?)
【问题讨论】: