【python】一次str.islower() 和 str.isupper()的誤用經(jīng)歷

總結(jié):islower()isupper()僅對字符串中字母的大小寫進(jìn)行判斷,并不會判斷所有字符是否都為英文字母

問題來源

今天碰到一個(gè)需求,簡化了就是驗(yàn)證一個(gè)字符串:

  • 不能全是數(shù)字
  • 不能全是小寫字母
  • 不能全是大寫字母

我的解決方案

時(shí)間比較緊,沒有考慮用正則表達(dá)式的方法,于是寫了個(gè)判斷:

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

因?yàn)?code>isdigit會對字符串中所有的字符進(jìn)行測試,當(dāng)所有的字符都為數(shù)字字符時(shí),返回真,否則返回假;
于是我想當(dāng)然的認(rèn)為islowerisupper也會對所有的字符進(jìn)行測試,僅當(dāng)全為小寫字母或全為大寫字母是為真,期望的是:

  • 1234, asdf, ASDF這類是通過測試,整段函數(shù)返回False
  • 1234asdf, 1234ASDF, asdfASDF這類是可以不能通過測試的,整段函數(shù)返回True

測試時(shí)發(fā)現(xiàn)的問題

寫完代碼后,我寫了個(gè)單元測試之后,發(fā)現(xiàn)字符串1234yarving也會通過測試,整段函數(shù)返回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.,如果所有的字母全是小寫并且至少有一個(gè)字母,返回真,否則返回假
  • 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.,如果所有的字母全是小寫并且至少有大個(gè)字母,返回真,否則返回假

isupperislower這兩個(gè)方法僅會判斷字符串里的字母是否大小寫,而不會對其他的字符進(jìn)行判斷,所以1234yarving中包含的字母全為小寫,會通過islower()測試,整段函數(shù)返回False

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,711評論 0 5
  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,554評論 0 13
  • 前言 最先接觸編程的知識是在大學(xué)里面,大學(xué)里面學(xué)了一些基礎(chǔ)的知識,c語言,java語言,單片機(jī)的匯編語言等;大學(xué)畢...
    oceanfive閱讀 3,395評論 0 7
  • 站臺上有很多人,他們互相擠著對方,直到聞到彼此身上不同的氣味。 有幾個(gè)年輕學(xué)生穿著相似的制服,女生披著長發(fā),男生戴...
    漠北鷗閱讀 257評論 3 1
  • 有時(shí)候, 你的步伐很快, 結(jié)果很慢。 有時(shí)候, 你的步伐很慢, 結(jié)果很快。 過去,你知道步伐太慢, 不好。 現(xiàn)在,...
    小劇在成長閱讀 221評論 0 6

友情鏈接更多精彩內(nèi)容