国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全17

這篇具有很好參考價(jià)值的文章主要介紹了關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全17。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

?編輯

8.3.4 結(jié)合使用函數(shù)和 while 循環(huán)

greeter.py

8.4 傳遞列表

greet_users.py

8.4.1 在函數(shù)中修改列表

printing_models.py

8.4.2 禁止函數(shù)修改列表

要將列表的副本傳遞給函數(shù),可以像下面這樣做:

往期快速傳送門??(在文章最后):

感謝大家的支持!歡迎訂閱收藏!專欄將持續(xù)更新!


關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全17,掌握Python分類專欄:開啟智能數(shù)據(jù)處理之旅!,python,python,開發(fā)語言,筆記

8.3.4 結(jié)合使用函數(shù)和 while 循環(huán)

可將函數(shù)同本書前面介紹的任何Python結(jié)構(gòu)結(jié)合起來使用。例如,下面將結(jié)合使用函數(shù) get_formatted_name()和while循環(huán),以更正規(guī)的方式問候用戶。下面嘗試使用名和姓跟用戶打 招呼:

greeter.py
def get_formatted_name(first_name, last_name):
 """返回整潔的姓名"""
 full_name = first_name + ' ' + last_name
 return full_name.title()
# 這是一個(gè)無限循環(huán)!
while True:
1 print("\nPlease tell me your name:")
 f_name = input("First name: ")
 l_name = input("Last name: ")
 formatted_name = get_formatted_name(f_name, l_name)
 print("\nHello, " + formatted_name + "!") 

在這個(gè)示例中,我們使用的是get_formatted_name()的簡單版本,不涉及中間名。其中的while 循環(huán)讓用戶輸入姓名:依次提示用戶輸入名和姓(見1)。 但這個(gè)while循環(huán)存在一個(gè)問題:沒有定義退出條件。請(qǐng)用戶提供一系列輸入時(shí),該在什么 地方提供退出條件呢?我們要讓用戶能夠盡可能容易地退出,因此每次提示用戶輸入時(shí),都應(yīng)提 供退出途徑。每次提示用戶輸入時(shí),都使用break語句提供了退出循環(huán)的簡單途徑:

def get_formatted_name(first_name, last_name):
 """返回整潔的姓名"""
 full_name = first_name + ' ' + last_name
 return full_name.title()
while True:
 print("\nPlease tell me your name:")
 print("(enter 'q' at any time to quit)")
 f_name = input("First name: ")
 if f_name == 'q':
 break
 l_name = input("Last name: ")
 if l_name == 'q':
 break
 formatted_name = get_formatted_name(f_name, l_name)
 print("\nHello, " + formatted_name + "!") 

我們添加了一條消息來告訴用戶如何退出,然后在每次提示用戶輸入時(shí),都檢查他輸入的是 否是退出值,如果是,就退出循環(huán)?,F(xiàn)在,這個(gè)程序?qū)⒉粩嗟貑柡?,直到用戶輸入的姓或名?q' 為止:

Please tell me your name:
(enter 'q' at any time to quit)
First name: eric
Last name: matthes
Hello, Eric Matthes!
Please tell me your name:
(enter 'q' at any time to quit)
First name: q 

8.4 傳遞列表

你經(jīng)常會(huì)發(fā)現(xiàn),向函數(shù)傳遞列表很有用,這種列表包含的可能是名字、數(shù)字或更復(fù)雜的對(duì) 象(如字典)。將列表傳遞給函數(shù)后,函數(shù)就能直接訪問其內(nèi)容。下面使用函數(shù)來提高處理列表 的效率。 假設(shè)有一個(gè)用戶列表,我們要問候其中的每位用戶。下面的示例將一個(gè)名字列表傳遞給一個(gè) 名為greet_users()的函數(shù),這個(gè)函數(shù)問候列表中的每個(gè)人:

greet_users.py

def greet_users(names):
 """向列表中的每位用戶都發(fā)出簡單的問候"""
 for name in names:
 msg = "Hello, " + name.title() + "!"
 print(msg)
1 usernames = ['hannah', 'ty', 'margot']
greet_users(usernames)

我們將greet_users()定義成接受一個(gè)名字列表,并將其存儲(chǔ)在形參names中。這個(gè)函數(shù)遍歷收到 的列表,并對(duì)其中的每位用戶都打印一條問候語。在1處,我們定義了一個(gè)用戶列表——usernames, 然后調(diào)用greet_users(),并將這個(gè)列表傳遞給它:

Hello, Hannah!
Hello, Ty!
Hello, Margot! 

輸出完全符合預(yù)期,每位用戶都看到了一條個(gè)性化的問候語。每當(dāng)你要問候一組用戶時(shí),都 可調(diào)用這個(gè)函數(shù)。

8.4.1 在函數(shù)中修改列表

將列表傳遞給函數(shù)后,函數(shù)就可對(duì)其進(jìn)行修改。在函數(shù)中對(duì)這個(gè)列表所做的任何修改都是永 久性的,這讓你能夠高效地處理大量的數(shù)據(jù)。

來看一家為用戶提交的設(shè)計(jì)制作3D打印模型的公司。需要打印的設(shè)計(jì)存儲(chǔ)在一個(gè)列表中, 打印后移到另一個(gè)列表中。下面是在不使用函數(shù)的情況下模擬這個(gè)過程的代碼:

printing_models.py

# 首先創(chuàng)建一個(gè)列表,其中包含一些要打印的設(shè)計(jì)
unprinted_designs = ['iphone case', 'robot pendant', 'dodecahedron']
completed_models = []
# 模擬打印每個(gè)設(shè)計(jì),直到?jīng)]有未打印的設(shè)計(jì)為止
# 打印每個(gè)設(shè)計(jì)后,都將其移到列表completed_models中
while unprinted_designs:
 current_design = unprinted_designs.pop()
 #模擬根據(jù)設(shè)計(jì)制作3D打印模型的過程
 print("Printing model: " + current_design)
 completed_models.append(current_design)
# 顯示打印好的所有模型
print("\nThe following models have been printed:")
for completed_model in completed_models:
 print(completed_model) 

這個(gè)程序首先創(chuàng)建一個(gè)需要打印的設(shè)計(jì)列表,還創(chuàng)建一個(gè)名為completed_models的空列表, 每個(gè)設(shè)計(jì)打印都將移到這個(gè)列表中。只要列表unprinted_designs中還有設(shè)計(jì),while循環(huán)就模擬 打印設(shè)計(jì)的過程:從該列表末尾刪除一個(gè)設(shè)計(jì),將其存儲(chǔ)到變量current_design中,并顯示一條 消息,指出正在打印當(dāng)前的設(shè)計(jì),再將該設(shè)計(jì)加入到列表completed_models中。循環(huán)結(jié)束后,顯 示已打印的所有設(shè)計(jì):

Printing model: dodecahedron
Printing model: robot pendant
Printing model: iphone case
The following models have been printed:
dodecahedron
robot pendant
iphone case 

為重新組織這些代碼,我們可編寫兩個(gè)函數(shù),每個(gè)都做一件具體的工作。大部分代碼都與 原來相同,只是效率更高。第一個(gè)函數(shù)將負(fù)責(zé)處理打印設(shè)計(jì)的工作,而第二個(gè)將概述打印了哪 些設(shè)計(jì):

1 def print_models(unprinted_designs, completed_models):
 """
 模擬打印每個(gè)設(shè)計(jì),直到?jīng)]有未打印的設(shè)計(jì)為止
 打印每個(gè)設(shè)計(jì)后,都將其移到列表completed_models中
 """
 while unprinted_designs:
 current_design = unprinted_designs.pop()
 # 模擬根據(jù)設(shè)計(jì)制作3D打印模型的過程
 print("Printing model: " + current_design)
 completed_models.append(current_design)
2 def show_completed_models(completed_models):
 """顯示打印好的所有模型"""
 print("\nThe following models have been printed:")
 for completed_model in completed_models:
 print(completed_model)
unprinted_designs = ['iphone case', 'robot pendant', 'dodecahedron']
completed_models = []
print_models(unprinted_designs, completed_models)
show_completed_models(completed_models) 

在1處,我們定義了函數(shù)print_models(),它包含兩個(gè)形參:一個(gè)需要打印的設(shè)計(jì)列表和一 個(gè)打印好的模型列表。給定這兩個(gè)列表,這個(gè)函數(shù)模擬打印每個(gè)設(shè)計(jì)的過程:將設(shè)計(jì)逐個(gè)地從未 打印的設(shè)計(jì)列表中取出,并加入到打印好的模型列表中。在2處,我們定義了函數(shù) show_completed_models(),它包含一個(gè)形參:打印好的模型列表。給定這個(gè)列表,函數(shù) show_completed_models()顯示打印出來的每個(gè)模型的名稱。 這個(gè)程序的輸出與未使用函數(shù)的版本相同,但組織更為有序。完成大部分工作的代碼都移到 了兩個(gè)函數(shù)中,讓主程序更容易理解。只要看看主程序,你就知道這個(gè)程序的功能容易看清得多:

unprinted_designs = ['iphone case', 'robot pendant', 'dodecahedron']
completed_models = []
print_models(unprinted_designs, completed_models)
show_completed_models(completed_models) 

我們創(chuàng)建了一個(gè)未打印的設(shè)計(jì)列表,還創(chuàng)建了一個(gè)空列表,用于存儲(chǔ)打印好的模型。接下來, 由于我們已經(jīng)定義了兩個(gè)函數(shù),因此只需調(diào)用它們并傳入正確的實(shí)參即可。我們調(diào)用 print_models()并向它傳遞兩個(gè)列表;像預(yù)期的一樣,print_models()模擬打印設(shè)計(jì)的過程。接 下來,我們調(diào)用show_completed_models(),并將打印好的模型列表傳遞給它,讓其能夠指出打印 了哪些模型。描述性的函數(shù)名讓別人閱讀這些代碼時(shí)也能明白,雖然其中沒有任何注釋。

相比于沒有使用函數(shù)的版本,這個(gè)程序更容易擴(kuò)展和維護(hù)。如果以后需要打印其他設(shè)計(jì), 只需再次調(diào)用print_models()即可。如果我們發(fā)現(xiàn)需要對(duì)打印代碼進(jìn)行修改,只需修改這些代碼 一次,就能影響所有調(diào)用該函數(shù)的地方;與必須分別修改程序的多個(gè)地方相比,這種修改的效 率更高。

這個(gè)程序還演示了這樣一種理念,即每個(gè)函數(shù)都應(yīng)只負(fù)責(zé)一項(xiàng)具體的工作。第一個(gè)函數(shù)打印 每個(gè)設(shè)計(jì),而第二個(gè)顯示打印好的模型;這優(yōu)于使用一個(gè)函數(shù)來完成兩項(xiàng)工作。編寫函數(shù)時(shí),如 果你發(fā)現(xiàn)它執(zhí)行的任務(wù)太多,請(qǐng)嘗試將這些代碼劃分到兩個(gè)函數(shù)中。別忘了,總是可以在一個(gè)函 數(shù)中調(diào)用另一個(gè)函數(shù),這有助于將復(fù)雜的任務(wù)劃分成一系列的步驟。

8.4.2 禁止函數(shù)修改列表

有時(shí)候,需要禁止函數(shù)修改列表。例如,假設(shè)像前一個(gè)示例那樣,你有一個(gè)未打印的設(shè)計(jì)列 表,并編寫了一個(gè)將這些設(shè)計(jì)移到打印好的模型列表中的函數(shù)。你可能會(huì)做出這樣的決定:即便 打印所有設(shè)計(jì)后,也要保留原來的未打印的設(shè)計(jì)列表,以供備案。但由于你將所有的設(shè)計(jì)都移出 了unprinted_designs,這個(gè)列表變成了空的,原來的列表沒有了。為解決這個(gè)問題,可向函數(shù)傳 遞列表的副本而不是原件;這樣函數(shù)所做的任何修改都只影響副本,而絲毫不影響原件。

要將列表的副本傳遞給函數(shù),可以像下面這樣做:
function_name(list_name[:])

切片表示法[:]創(chuàng)建列表的副本。在print_models.py中,如果不想清空未打印的設(shè)計(jì)列表,可像下面這樣調(diào)用print_models():

print_models(unprinted_designs[:], completed_models) 

這樣函數(shù)print_models()依然能夠完成其工作,因?yàn)樗@得了所有未打印的設(shè)計(jì)的名稱,但 它使用的是列表unprinted_designs的副本,而不是列表unprinted_designs本身。像以前一樣,列 表completed_models也將包含打印好的模型的名稱,但函數(shù)所做的修改不會(huì)影響到列表 unprinted_designs。

雖然向函數(shù)傳遞列表的副本可保留原始列表的內(nèi)容,但除非有充分的理由需要傳遞副本,否 則還是應(yīng)該將原始列表傳遞給函數(shù),因?yàn)樽尯瘮?shù)使用現(xiàn)成列表可避免花時(shí)間和內(nèi)存創(chuàng)建副本,從 而提高效率,在處理大型列表時(shí)尤其如此。


關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全12-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-762245.html

往期快速傳送門??(在文章最后):

感謝大家的支持!歡迎訂閱收藏!專欄將持續(xù)更新!

到了這里,關(guān)于關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全17的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全46

    關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全46

    目錄 16.1.3 提取并讀取數(shù)據(jù) highs_lows.py highs_lows.py 16.1.4 繪制氣溫圖表 highs_lows.py 16.1.5 模塊 datetime ?編輯 16.1.6 在圖表中添加日期 highs_lows.py 16.1.7 涵蓋更長的時(shí)間 highs_lows.py highs_lows.py 16.1.9 給圖表區(qū)域著色 highs_lows.py 往期快速傳送門??(在文章最后): 感謝大家的支持!歡迎

    2024年02月04日
    瀏覽(27)
  • 關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全25

    關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全25

    目錄 10.3.4 else 代碼塊、 10.3.5 處理 FileNotFoundError 異常 alice.py 在這個(gè)示例中,try代碼塊引發(fā)FileNotFoundError異常,因此Python找出與該錯(cuò)誤匹配的 except代碼塊,并運(yùn)行其中的代碼。最終的結(jié)果是顯示一條友好的錯(cuò)誤消息,而不是traceback: 10.3.6 分析文本 10.3.7 使用多個(gè)文件 word_cou

    2024年02月04日
    瀏覽(25)
  • 關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全47

    關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全47

    目錄 16.1.10 錯(cuò)誤檢查 highs_lows.py highs_lows.py 16.2 制作世界人口地圖:JSON 格式 16.2.1 下載世界人口數(shù)據(jù) 16.2.2 提取相關(guān)的數(shù)據(jù) population_data.json world_population.py 16.2.3 將字符串轉(zhuǎn)換為數(shù)字值 world_population.py 2world_population.py 16.2.4 獲取兩個(gè)字母的國別碼 countries.py country_codes.py 往期快速傳

    2024年02月03日
    瀏覽(26)
  • 關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全29

    關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全29

    目錄 11.2.4 方法 setUp() 注意 11.3 小結(jié) 第二部分 項(xiàng)目1 外星人入侵 第12 章 武裝飛船 注意 12.1 規(guī)劃項(xiàng)目 12.2 安裝 Pygame 注意 12.2.1 使用 pip 安裝 Python 包 注意 如果你啟動(dòng)終端會(huì)話時(shí)使用的是命令python3,那么在這里應(yīng)使用命令sudo python3 get-pip.py。 12.2.2 在 Linux 系統(tǒng)中安裝 Pygame 往

    2024年02月04日
    瀏覽(17)
  • 關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全48

    關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全48

    目錄 world_population.py 16.2.5 制作世界地圖 americas.py 16.2.6 在世界地圖上呈現(xiàn)數(shù)字?jǐn)?shù)據(jù) na_populations.py 16.2.7 繪制完整的世界人口地圖 world_population.py 16.2.8 根據(jù)人口數(shù)量將國家分組 world_population.py 16.2.9 使用 Pygal 設(shè)置世界地圖的樣式 world_population.py 往期快速傳送門??(在文章最后)

    2024年01月23日
    瀏覽(25)
  • 關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全43

    關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全43

    目錄 ?編輯 15.2.3 使2散點(diǎn)圖并設(shè)置其樣式 scatter_squares.py 15.2.4 使用 scatter()繪制一系列點(diǎn) scatter_squares.py 15.2.5 自動(dòng)計(jì)算數(shù)據(jù) scatter_squares.py 15.2.6 刪除數(shù)據(jù)點(diǎn)的輪廓 15.2.7 自定義顏色 15.2.8 使用顏色映射 scatter_squares.py 注意 15.2.9 自動(dòng)保存圖表 15.3 隨機(jī)漫步 15.3.1 創(chuàng)建 RandomWalk()類

    2024年02月04日
    瀏覽(22)
  • 關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全60

    關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全60

    目錄 19.4 小結(jié) 第 20 章 設(shè)置應(yīng)用程序的樣式并對(duì)其 進(jìn)行部署 20.1 設(shè)置項(xiàng)目“學(xué)習(xí)筆記”的樣式 20.1.1 應(yīng)用程序 django-bootstrap3 settings.py settings.py 20.1.2 使用 Bootstrap 來設(shè)置項(xiàng)目“學(xué)習(xí)筆記”的樣式 20.1.3 修改 base.html 1. 定義HTML頭部 base.html 2. 定義導(dǎo)航欄 3. 定義頁面的主要部分 往期

    2024年01月17日
    瀏覽(37)
  • 關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全26

    關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全26

    目錄 10.3.9 決定報(bào)告哪些錯(cuò)誤 10.4 存儲(chǔ)數(shù)據(jù) 10.4.1 使用 json.dump()和 json.load() number_writer.py number_reader.py 10.4.2 保存和讀取用戶生成的數(shù)據(jù) 對(duì)于用戶生成的數(shù)據(jù),使用json保存它們大有裨益,因?yàn)槿绻灰阅撤N方式進(jìn)行存儲(chǔ),等程 序停止運(yùn)行時(shí)用戶的信息將丟失。下面來看一個(gè)這樣

    2024年02月04日
    瀏覽(21)
  • 關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全41

    關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全41

    目錄 scoreboard.py game_functions.py game_functions.py 14.3.8 顯示等級(jí) game_stats.py scoreboard.py scoreboard.py scoreboard.py game_functions.py game_functions.py alien_invasion.py 14.3.9 顯示余下的飛船數(shù) ship.py scoreboard.py ? 我們將最高得分圓整到最近的10的整數(shù)倍(1),并添加了用逗號(hào)表示的千分位分隔符(見

    2024年02月04日
    瀏覽(21)
  • 關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全13

    關(guān)于“Python”的核心知識(shí)點(diǎn)整理大全13

    目錄 6.4.3 在字典中存儲(chǔ)字典 6.5 小結(jié) 第7章 用戶輸入和while循環(huán) 7.1 函數(shù) input()的工作原理 7.1.1 編寫清晰的程序 7.1.2 使用 int()來獲取數(shù)值輸入 7.1.3 求模運(yùn)算符 7.1.4 在 Python 2.7 中獲取輸入 7.2 while 循環(huán)簡介 7.2.1 使用 while 循環(huán) 往期快速傳送門??(在文章最后): 6.4.3 在字典中

    2024年02月04日
    瀏覽(92)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包