【python】一次str.islower()|【python】一次str.islower() 和 str.isupper()的误用经历
总结:问题来源 【【python】一次str.islower()|【python】一次str.islower() 和 str.isupper()的误用经历】今天碰到一个需求,简化了就是验证一个字符串:islower()
和isupper()
仅对字符串中字母的大小写进行判断,并不会判断所有字符是否都为英文字母
- 不能全是数字
- 不能全是小写字母
- 不能全是大写字母
if s.isdigit() or s.islower() or s.isupper():
return False
else:
return True
因为
isdigit
会对字符串中所有的字符进行测试,当所有的字符都为数字字符时,返回真,否则返回假;于是我想当然的认为
islower
和isupper
也会对所有的字符进行测试,仅当全为小写字母或全为大写字母是为真,期望的是:-
1234
,asdf
,ASDF
这类是通过测试,整段函数返回False -
1234asdf
,1234ASDF
,asdfASDF
这类是可以不能通过测试的,整段函数返回True
1234yarving
也会通过测试,整段函数返回True,这和我的初衷不同了,于是help(s.islower)
和help(s.isupper)
查看了下:寻根问题
-
help(s.islower)
:Return True if all cased characters in S are lowercase and there is at least one cased character in S, False otherwise.
,如果所有的字母全是小写并且至少有一个字母,返回真,否则返回假 -
help(s.isupper)
:Return True if all cased characters in S are uppercase and there is at least one cased character in S, False otherwise.
,如果所有的字母全是小写并且至少有大个字母,返回真,否则返回假
isupper
和islower
这两个方法仅会判断字符串里的字母是否大小写,而不会对其他的字符进行判断,所以1234yarving
中包含的字母全为小写,会通过islower()
测试,整段函数返回False推荐阅读
- 宽容谁
- 我要做大厨
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷
- 叙述作文
- 20190302|20190302 复盘翻盘
- 学无止境,人生还很长