日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

python不相等的兩個(gè)字符串的 if 條件判斷為True詳解

瀏覽:103日期:2022-08-02 14:21:19

今天遇到一個(gè)非常基礎(chǔ)的問題,結(jié)果搞了好久好久.....趕快寫一篇博客記錄一下:

本來兩個(gè)不一樣的字符串,在if 的條件判斷中被判定為True,下面是錯(cuò)誤的代碼:

test_str = ’happy’if test_str == ’good’ or ’happy’: #這樣if判斷永遠(yuǎn)是True,寫法錯(cuò)誤 print(’aa’)else: print(’bbbb’)

這是正確的代碼:

test_str = ’happy’if test_str == ’good’ or test_str == ’happy’: print(’aa’)else: print(’bbbb’)

補(bǔ)充知識(shí):python基礎(chǔ)(if判斷條件語句,比較、布爾運(yùn)算符)

1.條件和條件語句

在編寫的程序中,語句都是逐條執(zhí)行的。現(xiàn)在更進(jìn)一步,讓程序選擇是否執(zhí)行特定的語句塊。

1 )布爾值的用武之地

真值也稱布爾值,是以在真值方面做出了巨大貢獻(xiàn)的George Boole命名的。

用作布爾表達(dá)式(如用作if語句中的條件)時(shí),下面的值都將被解釋器視為假:

False None 0 '' () [] {}

換而言之,標(biāo)準(zhǔn)值False和None、各種類型(包括浮點(diǎn)數(shù)、復(fù)數(shù)等)的數(shù)值0、空序列(如空字符串、空元組和空列表)以及空映射(如空字典)都被視為假,而其他各種值都被視為真,包括特殊值True。

正如Python老手Laura Creighton指出的,這種差別類似于“有些東西”和“沒有東西”的差別,而不是真和假的差別。

這意味著任何Python值都可解釋為真值。乍一看這有點(diǎn)令人迷惑,但也很有用。雖然可供選擇的真值非常多,但標(biāo)準(zhǔn)真值為True和False。在有些語言(如C語言和2.3之前的Python版本)中,標(biāo)準(zhǔn)真值為0(表示假)和1(表示真)。實(shí)際上,True和False不過是0和1的別名,雖然看起來不同,但作用是相同的。

>>> True True >>> False False >>> True == 1 True >>> False == 0 True >>> True + False + 42 43

因此,如果你看到一個(gè)返回1或0的表達(dá)式(可能是使用較舊的Python版本編寫的),就知道這實(shí)際上意味著True或False。

布爾值True和False屬于類型bool,而bool與list、str和tuple一樣,可用來轉(zhuǎn)換其他的值。

>>> bool(’I think, therefore I am’) True >>> bool(42) True >>> bool(’’) False >>> bool(0) False

鑒于任何值都可用作布爾值因此你幾乎不需要顯式地進(jìn)行轉(zhuǎn)換(Pthon會(huì)自動(dòng)轉(zhuǎn)換)

雖然[]和''都為假(即bool([]) == bool('') == False),但它們并不相等(即[] != '')。

對其他各種為假的對象來說,情況亦如此(一個(gè)更顯而易見的例子是() != False)。

2) 有條件地執(zhí)行和 if 語句

真值可合并,先來看看真值可用來做什么。請嘗試運(yùn)行下面的腳本:

name = input(’What is your name? ’) if name.endswith(’Gumby’): print(’Hello, Mr. Gumby’)

這就是if語句,讓你能夠有條件地執(zhí)行代碼。這意味著如果條件(if和冒號(hào)之間的表達(dá)式)為前面定義的真,就執(zhí)行后續(xù)代碼塊(這里是一條print語句);如果條件為假,就不執(zhí)行。

3)else 子句

在前一節(jié)的示例中,如果你輸入以Gumby結(jié)尾的名字,方法name.endswith將返回True,導(dǎo)致后續(xù)代碼塊執(zhí)行——打印問候語。如果你愿意,可使用else子句增加一種選擇(之所以叫子句是因?yàn)閑lse不是獨(dú)立的語句,而是if語句的一部分)。

name = input(’What is your name?’) if name.endswith(’Gumby’): print(’Hello, Mr. Gumby’) else: print(’Hello, stranger’)

在這里,如果沒有執(zhí)行第一個(gè)代碼塊(因?yàn)闂l件為假),將進(jìn)入第二個(gè)代碼塊。

還有一個(gè)與if語句很像的“親戚”,它就是條件表達(dá)式——C語言中三目運(yùn)算符的Python版本。下面的表達(dá)式使用if和else確定其值:

status = 'friend' if name.endswith('Gumby') else 'stranger'

如果條件(緊跟在if后面)為真,表達(dá)式的結(jié)果為提供的第一個(gè)值(這里為'friend'),否則為第二個(gè)值(這里為'stranger')。

4)elif 子句

要檢查多個(gè)條件,可使用elif。elif是else if的縮寫,由一個(gè)if子句和一個(gè)else子句組合而成,也就是包含條件的else子句。

num = int(input(’Enter a number: ’)) ifnum > 0: print(’The number is positive’) elifnum < 0: print(’The number is negative’) else: print(’The number is zero’)

5)代碼塊嵌套

你可將if語句放在其他if語句塊中,如下所示:

name = input(’What is your name? ’) if name.endswith(’Gumby’): if name.startswith(’Mr.’): print(’Hello, Mr. Gumby’) elif name.startswith(’Mrs.’): print(’Hello, Mrs. Gumby’) else: print(’Hello, Gumby’) else: print(’Hello, stranger’)

在這里,如果名字以Gumby結(jié)尾,就同時(shí)檢查名字開頭,這是在第一個(gè)代碼塊中使用一條獨(dú)立的if語句完成的。請注意,這里還使用了elif。最后一個(gè)分支(else子句)沒有指定條件——如果沒有選擇其他分支,就選擇最后一個(gè)分支。如果需要,這里的兩個(gè)else子句都可省略。如果省略里面的else子句,將忽略并非以Mr.或Mrs.打頭的名字(假設(shè)名字為Gumby)。如果省略外面的else子句,將忽略陌生人。

6)更復(fù)雜的條件

1. 比較運(yùn)算符

在條件表達(dá)式中,最基本的運(yùn)算符可能是比較運(yùn)算符,它們用于執(zhí)行比較。

python不相等的兩個(gè)字符串的 if 條件判斷為True詳解

從理論上說,可使用<和<=等運(yùn)算符比較任意兩個(gè)對象x和y的相對大小,并獲得一個(gè)真值,但這種比較僅在x和y的類型相同或相近時(shí)(如兩個(gè)整數(shù)或一個(gè)整數(shù)和一個(gè)浮點(diǎn)數(shù))才有意義。

將整數(shù)與字符串相加毫無意義,檢查一個(gè)整數(shù)是否小于一個(gè)字符串也是一樣。

與賦值一樣,Python也支持鏈?zhǔn)奖容^:可同時(shí)使用多個(gè)比較運(yùn)算符,如0 < age < 100。有些比較運(yùn)算符需要特別注意

相等運(yùn)算符

要確定兩個(gè)對象是否相等,可使用比較運(yùn)算符,用兩個(gè)等號(hào)(==)表示。

>>> 'foo' == 'foo' True >>> 'foo' == 'bar' False

兩個(gè)等號(hào)?為何不像數(shù)學(xué)中那樣使用一個(gè)等號(hào)呢?但這里還是試試一個(gè)等號(hào)吧。

>>> 'foo' = 'foo' SyntaxError: can’t assign to literal

一個(gè)等號(hào)是賦值運(yùn)算符,用于修改值,而進(jìn)行比較時(shí)你可不想這樣做。

is:相同運(yùn)算符

這個(gè)運(yùn)算符很有趣,其作用看似與==一樣,但實(shí)際上并非如此。

>>> x = y = [1, 2, 3] >>> z = [1, 2, 3] >>> x == y True >>> x == z True >>> x is y True >>> x is z False

在前幾個(gè)示例中,看不出什么問題,但最后一個(gè)示例的結(jié)果很奇怪:x和z相等,但x is z的結(jié)果卻為False。為何會(huì)這樣呢?因?yàn)閕s檢查兩個(gè)對象是否相同(而不是相等)。變量x和y指向同一個(gè)列表,而z指向另一個(gè)列表(其中包含的值以及這些值的排列順序都與前一個(gè)列表相同)。這兩個(gè)列表雖然相等,但并非同一個(gè)對象。這好像不可理喻?請看下面的示例:

>>> x = [1, 2, 3] >>> y = [2, 4] >>> x is not y True >>> del x[2] >>> y[1] = 1 >>> y.reverse()

在這個(gè)示例中,我首先創(chuàng)建了兩個(gè)不同的列表x和y。如你所見,x is not y(與x is y相反)的結(jié)果為True,接下來,我稍微修改了這兩個(gè)列表,現(xiàn)在它們雖然相等,但依然是兩個(gè)不同的列表。

>>> x == y True >>> x is y False

顯然,這兩個(gè)列表相等但不相同。

總之,==用來檢查兩個(gè)對象是否相等,而is用來檢查兩個(gè)對象是否相同(是同一個(gè)對象)。

不要將is用于數(shù)和字符串等不可變的基本值。鑒于Python在內(nèi)部處理這些對象的方式,這樣做的結(jié)果是不可預(yù)測的。

in:成員資格運(yùn)算符

與其他比較運(yùn)算符一樣,它也可用于條件表達(dá)式中。

name = input(’What is your name?’) if ’s’ in name: print(’Your name contains the letter 's'.’) else: print(’Your name does not contain the letter 's'.’)

字符串和序列的比較

字符串是根據(jù)字符的字母排列順序進(jìn)行比較的。

>>> 'alpha' < 'beta' True

雖然基于的是字母排列順序,但字母都是Unicode字符,它們是按碼點(diǎn)排列的。

實(shí)際上,字符是根據(jù)順序值排列的。要獲悉字母的順序值,可使用函數(shù)ord。這個(gè)函數(shù)的作用與函數(shù)chr相反。

這種方法既合理又一致,但可能與你排序的方式相反。例如,涉及大寫字母時(shí),排列順序就可能與你想要的不同。

>>> 'a' < 'B' False

一個(gè)訣竅是忽略大小寫。為此可使用字符串方法lower,如下所示:

>>> 'a'.lower() < 'B'.lower() True >>> ’FnOrD’.lower() == ’Fnord’.lower() True

其他序列的比較方式與此相同,但這些序列包含的元素可能不是字符,而是其他類型的值。

>>> [1, 2] < [2, 1] True

如果序列的元素為其他序列,將根據(jù)同樣的規(guī)則對這些元素進(jìn)行比較。

>>> [2, [1, 4]] < [2, [1, 5]] True

2. 布爾運(yùn)算符

至此,你已見過很多返回真值的表達(dá)式(實(shí)際上,考慮到所有值都可解釋為真值,因此所有的表達(dá)式都返回真值),但你可能需要檢查多個(gè)條件。例如,假設(shè)你要編寫一個(gè)程序,讓它讀取一個(gè)數(shù),并檢查這個(gè)數(shù)是否位于1~10(含)。為此,可像下面這樣做:

number = int(input(’Enter a number between 1 and 10: ’)) if number <= 10: if number >= 1: print(’Great!’) else: print(’Wrong!’) else: print(’Wrong!’)

這可行,但有點(diǎn)笨拙,因?yàn)檩斎肓藀rint(’Wrong!’)兩次。重復(fù)勞動(dòng)可不是好事,那么該如何辦呢?很簡單。

number = int(input(’Enter a number between 1 and 10: ’)) if number <= 10 and number >= 1: print(’Great!’) else: print(’Wrong!’)

通過使用鏈?zhǔn)奖容^1 <= number <= 10可進(jìn)一步簡化這個(gè)示例。

運(yùn)算符and是一個(gè)布爾運(yùn)算符。它接受兩個(gè)真值,并在這兩個(gè)值都為真時(shí)返回真,否則返回假。還有另外兩個(gè)布爾運(yùn)算符:or和not。通過使用這三個(gè)運(yùn)算符,能以任何方式組合真值。

if ((cash > price) or customer_has_good_credit) and not out_of_stock: give_goods()

短路邏輯和條件表達(dá)式

布爾運(yùn)算符有個(gè)有趣的特征:只做必要的計(jì)算。例如,僅當(dāng)x和y都為真時(shí),表達(dá)式x and y才為真。因此如果x為假,這個(gè)表達(dá)式將立即返回假,而不關(guān)心y。實(shí)際上,如果x為假,這個(gè)表達(dá)式將返回x,否則返回y。這種行為稱為短路邏輯(或者延遲求值):布爾運(yùn)算符常被稱為邏輯運(yùn)算符,在有些情況下將“繞過”第二個(gè)值。對于運(yùn)算符or,情況亦如此。在表達(dá)式x or y中,如果x為真,就返回x,否則返回y。請注意,這意味著位于布爾運(yùn)算符后面的代碼(如函數(shù)調(diào)用)可能根本不會(huì)執(zhí)行。像下面這樣的代碼就利用了這種行為:

name = input(’Please enter your name: ’) or ’<unknown>’

如果沒有輸入名字,上述or表達(dá)式的結(jié)果將為’<unknown>’。在很多情況下,寧愿使用條件表達(dá)式,而不耍這樣的短路花樣。

以上這篇python不相等的兩個(gè)字符串的 if 條件判斷為True詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲成人av观看| 奇米狠狠一区二区三区| 国产日韩欧美在线播放不卡| 亚洲尤物av| 日韩国产在线一| 欧美日本不卡| 久久99高清| 亚洲天堂免费电影| 欧美色图国产精品| 精品一区免费| 亚洲综合国产| 911亚洲精品| 日本成人手机在线| 久久激情网站| 水蜜桃久久夜色精品一区的特点| 老司机精品久久| 亚洲精品欧美| 国产精品丝袜在线播放| 日韩av一二三| 麻豆高清免费国产一区| 亚洲黄色中文字幕| 红桃视频国产一区| 午夜电影一区| 久久精品伊人| 国产91精品对白在线播放| 亚洲欧美日韩一区在线观看| 日本在线观看不卡视频| 国产乱码精品一区二区三区亚洲人| 久久中文字幕一区二区| 亚洲精品**中文毛片| 免费精品国产| 日本不卡视频在线| 开心激情综合| 激情久久婷婷| 日韩欧美四区| 国产粉嫩在线观看| 久久国产精品99国产| 国产精品免费精品自在线观看| 国产va在线视频| 午夜亚洲一区| 精品中文在线| 亚洲一卡久久| 国产精品第一国产精品| 久久中文字幕av| 欧美一区网站| 欧美在线观看视频一区| 奇米狠狠一区二区三区| 日产精品一区| 日韩国产欧美视频| 久久天堂精品| 国产精品久久久免费| 久久亚洲国产| 国产精品午夜av| 国产亚洲福利| 国产专区精品| 亚洲精品美女| 久久婷婷亚洲| 欧美日韩亚洲一区二区三区在线| 久久网站免费观看| 国产精品一区二区99| 欧美成人午夜| 久久av网站| 久久不射网站| 免费看av不卡| 国产日韩一区| 最新国产拍偷乱拍精品| 高清一区二区三区| 视频一区中文字幕精品| 日韩中文欧美| 国产高清视频一区二区| 首页国产欧美久久| 私拍精品福利视频在线一区| 日精品一区二区三区| 日韩一区三区| 国产精品密蕾丝视频下载| 日韩午夜黄色| 电影亚洲精品噜噜在线观看| 国产欧美综合一区二区三区| 国产精品日本| 99久久久久国产精品| 老司机精品视频网| 日本不卡高清| 夜夜嗨av一区二区三区网站四季av| 不卡专区在线| 国产精品亚洲综合在线观看| 日韩制服丝袜av| 久久精品av| 国产精品啊啊啊| 日韩精品中文字幕吗一区二区| 亚洲国产日韩欧美在线| 日本在线啊啊| 国产精品yjizz视频网| 国产高清视频一区二区| 日本欧美大码aⅴ在线播放| 国产亚洲福利| 欧美理论视频| 久久婷婷av| 伊伊综合在线| 国产成人黄色| 精品一区二区三区在线观看视频| 国产欧美一区二区三区精品观看| 亚洲青青久久| 国产亚洲精品自拍| 欧美91精品| 婷婷久久一区| 欧美~级网站不卡| 欧美一级精品| 久久高清免费| 亚洲第一精品影视| 亚洲特级毛片| 蜜臀91精品国产高清在线观看| 国产在线|日韩| 亚洲天堂av影院| 亚洲风情在线资源| 亚洲天堂资源| 国产亚洲一区二区手机在线观看| 欧美www视频在线观看| 欧美成人一二区| 麻豆国产一区| 成人台湾亚洲精品一区二区 | 精品一区二区三区中文字幕视频 | 91av一区| 国产精品日本一区二区不卡视频 | 天堂精品久久久久| 亚洲精品动态| 日本精品一区二区三区在线观看视频| 日韩专区一卡二卡| 中文字幕一区二区三区在线视频| 丝袜亚洲另类欧美| 三级欧美在线一区| 亚洲精品精选| 欧美日韩亚洲三区| 捆绑调教美女网站视频一区| 精品亚洲免a| 日本美女一区| 蜜臀91精品国产高清在线观看| 五月天综合网站| 视频一区二区三区中文字幕| 亚洲香蕉久久| 国产乱码精品一区二区三区亚洲人| 国产精品高潮呻吟久久久久| 欧美激情视频一区二区三区免费| 精品一区二区三区免费看| av高清不卡| 国产真实久久| 免费久久99精品国产| 欧美亚洲tv| 精品久久不卡| 色爱av综合网| 亚洲欧美日本国产专区一区| 日韩欧美三区| 精品伊人久久久| 国产一区亚洲| 一区二区电影在线观看| 欧美日韩一区二区三区在线电影| 精品日韩一区| 欧美日韩国产亚洲一区| 亚洲精一区二区三区| 国产日韩亚洲| 成人精品亚洲| 亚洲精品观看| 国产成人a视频高清在线观看| 美女少妇全过程你懂的久久| 中文字幕视频精品一区二区三区| 久久99青青| 精品欧美激情在线观看| 97久久亚洲| 亚洲涩涩在线| 亚洲欧洲美洲国产香蕉| 精品日韩在线| 亚洲永久字幕| 国产精品久久国产愉拍| 亚洲天堂黄色| 91精品日本| 国产v综合v| 亚洲精品无播放器在线播放| 国产成人精品福利| 在线精品观看| 欧美13videosex性极品| 亚洲日产av中文字幕| 鲁鲁在线中文| 日韩区一区二| 欧美日韩在线播放视频| 日韩国产在线一| 欧美成人精品三级网站| 日韩精品一区二区三区中文| 日韩欧美精品| 日本中文字幕视频一区| 91精品精品| 国产日韩欧美一区| 欧美美女一区| 久久精品三级| 亚洲精品乱码日韩| 久久久久美女| 欧美国产精品| 日韩中文字幕视频网| 91精品国产自产在线观看永久∴| 国产欧美啪啪| 国产精品美女久久久| 国产精品久久久久久久免费观看 |