计算机杂谈升级之旅程序猿阵线联盟-汇总各类技术干货

【python】一次str.islower() 和 str.is

2018-04-03  本文已影响26人  yarving

总结:islower()isupper()仅对字符串中字母的大小写进行判断,并不会判断所有字符是否都为英文字母

问题来源

今天碰到一个需求,简化了就是验证一个字符串:

我的解决方案

时间比较紧,没有考虑用正则表达式的方法,于是写了个判断:

if s.isdigit() or s.islower() or s.isupper():
    return False
else:
    return True

因为isdigit会对字符串中所有的字符进行测试,当所有的字符都为数字字符时,返回真,否则返回假;
于是我想当然的认为islowerisupper也会对所有的字符进行测试,仅当全为小写字母或全为大写字母是为真,期望的是:

测试时发现的问题

写完代码后,我写了个单元测试之后,发现字符串1234yarving也会通过测试,整段函数返回True,这和我的初衷不同了,于是help(s.islower)help(s.isupper)查看了下:

寻根问题

isupperislower这两个方法仅会判断字符串里的字母是否大小写,而不会对其他的字符进行判断,所以1234yarving中包含的字母全为小写,会通过islower()测试,整段函数返回False

上一篇 下一篇

猜你喜欢

热点阅读