床長(zhǎng)人工智能教程——復(fù)合語(yǔ)句

情感導(dǎo)師 7578

 添加導(dǎo)師微信MurieL0304

獲取更多愛情挽回攻略 婚姻修復(fù)技巧 戀愛脫單干貨

聲明:本人只是分享一些床長(zhǎng)的免費(fèi)雜文而已,并非床長(zhǎng)人工智能網(wǎng)校的收費(fèi)文章。

復(fù)合語(yǔ)句包含(其他組的)其他語(yǔ)句;它們以某種方式影響或控制其他語(yǔ)句的執(zhí)行。通常,復(fù)合語(yǔ)句跨越多行,盡管以簡(jiǎn)單的形式可以將整個(gè)復(fù)合語(yǔ)句包含在一行中。

的if,while和for語(yǔ)句實(shí)現(xiàn)了傳統(tǒng)的控制流結(jié)構(gòu)。 try指定一組語(yǔ)句的異常處理程序和/或清除代碼,而該 with語(yǔ)句允許圍繞代碼塊執(zhí)行初始化和結(jié)束代碼。函數(shù)和類定義在語(yǔ)法上也是復(fù)合語(yǔ)句。

復(fù)合語(yǔ)句由一個(gè)或多個(gè)“子句”組成。子句由標(biāo)題和“套件”組成。特定復(fù)合語(yǔ)句的子句標(biāo)題都處于相同的縮進(jìn)級(jí)別。每個(gè)子句頭均以唯一標(biāo)識(shí)的關(guān)鍵字開頭,并以冒號(hào)結(jié)尾。套件是由子句控制的一組語(yǔ)句。套件可以是在標(biāo)頭的冒號(hào)之后,與標(biāo)頭在同一行上的一個(gè)或多個(gè)以分號(hào)分隔的簡(jiǎn)單語(yǔ)句,也可以是后續(xù)行上的一個(gè)或多個(gè)縮進(jìn)語(yǔ)句。套件的僅后者形式可以包含嵌套的復(fù)合語(yǔ)句;以下是非法的,主要是因?yàn)椴磺宄f以下else子句屬于哪個(gè)子句 :

床長(zhǎng)人工智能教程——復(fù)合語(yǔ)句

if test1: if test2: print(x)

還要注意,在這種情況下,分號(hào)比冒號(hào)綁定更緊密,因此在以下示例中,將執(zhí)行全部print()調(diào)用或不執(zhí)行任何調(diào)用:

if x < y < z: print(x); print(y); print(z)

總結(jié):

compound_stmt :: = if_stmt

| while_stmt

| for_stmt

| try_stmt

| with_stmt

| funcdef

| classdef

| async_with_stmt

| async_for_stmt

| 套件 :: = NEWLINE | NEWLINE INDENT + DEDENT

語(yǔ)句 :: = NEWLINE | stmt_list :: = (“;” )* [“;”]

async_funcdef

stmt_liststatementstmt_listcompound_stmt

simple_stmtsimple_stmt

請(qǐng)注意,語(yǔ)句始終以NEWLINE可能后跟 結(jié)束DEDENT。還要注意,可選的連續(xù)子句總是以不能開始語(yǔ)句的關(guān)鍵字開頭,因此沒有歧義(else在Python中,“懸掛”問題通過要求嵌套 if語(yǔ)句縮進(jìn)來(lái)解決)。

為了清楚起見,以下各節(jié)中語(yǔ)法規(guī)則的格式將每個(gè)子句放在單獨(dú)的行上。

8.1。該if聲明

該if語(yǔ)句用于條件執(zhí)行:

if_stmt :: =“ if” assignment_expression“:” suite

(“ elif” assignment_expression“:” suite)*

[“ else”“:” suite]

它通過逐一評(píng)估表達(dá)式直到發(fā)現(xiàn)一個(gè)為真,來(lái)選擇其中一個(gè)套件(請(qǐng)參閱布爾運(yùn)算部分中的true和false的定義);然后執(zhí)行該套件(并且不會(huì)if執(zhí)行或評(píng)估語(yǔ)句的其他部分 )。如果所有表達(dá)式均為假else,則執(zhí)行該子句的套件(如果存在)。

8.2。該while聲明

while只要表達(dá)式為真,該語(yǔ)句就可以重復(fù)執(zhí)行:

while_stmt :: =“ while” assignment_expression“:” suite

[“ else”“:” suite]

這將反復(fù)測(cè)試表達(dá)式,如果為true,則執(zhí)行第一個(gè)套件;否則,將執(zhí)行第一個(gè)套件。如果表達(dá)式為假(可能是第一次測(cè)試)else,則執(zhí)行該子句的套件(如果存在),并終止循環(huán)。

break在第一個(gè)套件中執(zhí)行的語(yǔ)句將終止循環(huán),而不執(zhí)行該else子句的套件。continue 在第一個(gè)套件中執(zhí)行的語(yǔ)句將跳過套件的其余部分,并返回測(cè)試表達(dá)式。

8.3。該for聲明

該for語(yǔ)句用于遍歷序列的元素(例如字符串,元組或列表)或其他可迭代對(duì)象:

for_stmt :: =“ for” target_list“ in” expression_list“:” suite

表達(dá)式列表只計(jì)算一次;它應(yīng)該產(chǎn)生一個(gè)可迭代的對(duì)象。為的結(jié)果創(chuàng)建一個(gè)迭代器expression_list。然后按迭代器返回的順序?qū)Φ魈峁┑拿總€(gè)項(xiàng)目執(zhí)行一次套件。依次使用分配的標(biāo)準(zhǔn)規(guī)則將每個(gè)項(xiàng)目分配給目標(biāo)列表(請(qǐng)參閱Assignment語(yǔ)句),然后執(zhí)行套件。當(dāng)項(xiàng)目用盡時(shí)(緊接序列為空或迭代器引發(fā)StopIteration異常時(shí)),將else執(zhí)行子句中的套件(如果存在),并且循環(huán)終止。

break在第一個(gè)套件中執(zhí)行的語(yǔ)句將終止循環(huán),而不執(zhí)行該else子句的套件。continue 在第一個(gè)套件中執(zhí)行的語(yǔ)句將跳過套件的其余部分,并繼續(xù)下一個(gè)項(xiàng)目,else如果沒有下一個(gè)項(xiàng)目,則繼續(xù)該子句。

for循環(huán)將分配給目標(biāo)列表中的變量。這將覆蓋之前所有對(duì)這些變量的賦值,包括在for循環(huán)套件中進(jìn)行的賦值:

for i in range(10):

print(i)

i = 5 # this will not affect the for-loop

# because i will be overwritten with the next

# index in the range

循環(huán)結(jié)束時(shí),不會(huì)刪除目標(biāo)列表中的名稱,但是如果序列為空,則循環(huán)將不會(huì)為其分配任何名稱。提示:內(nèi)置函數(shù)range()返回一個(gè)適合于模擬Pascal的效果的整數(shù)迭代器。例如, 返回列表。for i := a to b dolist(range(3))[0, 1, 2]

注意 循環(huán)修改序列時(shí)會(huì)有些微妙(這僅適用于可變序列,例如列表)。內(nèi)部計(jì)數(shù)器用于跟蹤下一個(gè)要使用的項(xiàng)目,并且每次迭代時(shí)都會(huì)遞增。當(dāng)該計(jì)數(shù)器達(dá)到序列的長(zhǎng)度時(shí),循環(huán)終止。這意味著,如果套件從序列中刪除當(dāng)前(或上一個(gè))項(xiàng)目,則下一個(gè)項(xiàng)目將被跳過(因?yàn)樗@取已被處理的當(dāng)前項(xiàng)目的索引)。同樣,如果套件在當(dāng)前項(xiàng)目之前按順序插入一個(gè)項(xiàng)目,則下次通過循環(huán)再次處理當(dāng)前項(xiàng)目。這可能會(huì)導(dǎo)致討厭的錯(cuò)誤,可以通過使用整個(gè)序列的一部分進(jìn)行臨時(shí)復(fù)制來(lái)避免這些錯(cuò)誤,例如,

for x in a[:]:

if x < 0: a.remove(x)

評(píng)論列表

頭像
2024-03-19 04:03:48

情感方面有問題,真的是要找專業(yè)的咨詢機(jī)構(gòu)

頭像
2023-12-29 12:12:06

被拉黑了,還有希望么?

 添加導(dǎo)師微信MurieL0304

獲取更多愛情挽回攻略 婚姻修復(fù)技巧 戀愛脫單干貨

發(fā)表評(píng)論 (已有2條評(píng)論)