Python編程快速上手-讓繁瑣工作自動化 第三章 函數習題及其答案
第三章 函數習題及其答案
1、為什麽在程序中加入函數會有好處?
答:函數減少了重復的代碼。這讓程序更短,更容易閱讀,更容易修改。
2、函數中的代碼何時執行: 在函數被定義時,還是在函數被調用時?
答:函數中的代碼在函數被調用時執行,而不是在函數定義時。
3、什麽語句創建一個函數?
答:def語句定義了(創建了)一個函數。
4、一個函數和一次函數調用有什麽區別?
答:函數包含def語句和在def子句中的代碼。函數調用讓程序執行轉到函數內,函數調用求值為該函數的返回值。
5、Python程序中有多少全局作用域?有多少局部作用域?
答:在調用一個函數時,創建了一個全局函數和一個局部作用域。
6、當函數調用返回時,局部作用域中的變量發生了什麽?
答:函數返回時,局部作用域被銷毀,其中所有的變量都被遺忘了。
7、什麽是返回值?返回值可以作為表達式的一部分嗎?
答:返回值時函數調用求值的結果。像所有值一樣,返回值可以作為表達式的一部分。
8、如果函數沒有返回語句,對它調用的返回值是什麽?
答:如果函數沒有return語句,它的返回值就是None。
9、如何強制函數中的一個變量指的是全局變量?
答:global語句強制函數中的一個變量引用該全局變量。
10、None的數據類型是什麽?
答: None的數據類型是None Type。
11、import areallyourpetsnamederic語句做了什麽?
答:import語句導入了areallyourpetsnamederic模塊(順便說一句,這不是一個真正的Python模塊)。
12、如果在名為spam的模塊中,有一個名為bacon()的函數,在引入span後,如何調用它?
答:該函數可以通過spam.bacon()調用。
13、如何防止程序在遇到錯誤時崩潰?
答:將可能導致錯誤的代碼行放在一個try子句中。
14、try子句中發生了什麽?except子句中發生了什麽?
答:可能導致錯誤的代碼放在try子句中。發生錯誤時,要執行的代碼放在except子句中。
3.11 實踐項目 作為實踐,請編寫程序完成下列任務
3.11.1 Collatz序列
編寫一個名為collatz()的函數,它有一個名為number的參數。如果參數是偶數,那麽collatz()就打印number//2,
並返回該值。如果number是奇數,collatz()就打印並返回 3*number + 1
然後編寫一個程序,讓用戶輸入一個整數,並不斷對這個數調用collatz(),直到函數返回值1(令人驚奇的是,這個序列
對於任何整數都有效,利用這個序列,你遲早會得到1!即使數學家也不能確定為什。你的程序在研究所謂的"Collatz序列",
它有時後被稱為"最簡單的、不可能的數學問題")。
記得將input()的返回值用int函數轉成一個整數,否則它會是一個字符串。
提示:如果number % 2 == 0, 整數number就是偶數。如果number % 2 == 1, 它就是奇數。
答:
#!/usr/bin/env python3 # -*- coding:utf-8 -*- # Author: davie """ 編寫一個名為collatz()的函數,它有一個名為number的參數。如果參數是偶數,那麽collatz()就打印number//2, 並返回該值。如果number是奇數,collatz()就打印並返回 3*number + 1 然後編寫一個程序,讓用戶輸入一個整數,並不斷對這個數調用collatz(),直到函數返回值1(令人驚奇的是,這個序列 對於任何整數都有效,利用這個序列,你遲早會得到1!即使數學家也不能確定為什。你的程序在研究所謂的"Collatz序列", 它有時後被稱為"最簡單的、不可能的數學問題")。 記得將input()的返回值用int函數轉成一個整數,否則它會是一個字符串。 提示:如果number % 2 == 0, 整數number就是偶數。如果number % 2 == 1, 它就是奇數。 """ def collatz(number): if number == 1: return 1 elif number % 2 == 0: return number // 2 elif number % 2 == 1: return 3*number + 1 print(collatz(18)) print(collatz(17))
3.11.2 輸入驗證
在前面的項目中添加try和except語句,檢測用戶是否輸入了一個非整數的字符串。正常情況下,int()函數在傳入一個非整數字符串時,會產生ValueError錯誤,比如int(‘puppy‘)。在execpt子句中,向用戶輸出一條信息,告訴他們必須輸入一個整數。
答:
#!/usr/bin/env python3 # -*- coding:utf-8 -*- # Author: davie """ 編寫一個名為collatz()的函數,它有一個名為number的參數。如果參數是偶數,那麽collatz()就打印number//2, 並返回該值。如果number是奇數,collatz()就打印並返回 3*number + 1 然後編寫一個程序,讓用戶輸入一個整數,並不斷對這個數調用collatz(),直到函數返回值1(令人驚奇的是,這個序列 對於任何整數都有效,利用這個序列,你遲早會得到1!即使數學家也不能確定為什。你的程序在研究所謂的"Collatz序列", 它有時後被稱為"最簡單的、不可能的數學問題")。 記得將input()的返回值用int函數轉成一個整數,否則它會是一個字符串。 提示:如果number % 2 == 0, 整數number就是偶數。如果number % 2 == 1, 它就是奇數。 """ def collatz(number): if number == 1: return 1 elif number % 2 == 0: numbers = number // 2 print(numbers) collatz(numbers) elif number % 2 == 1: numbers = 3*number + 1 print(numbers) collatz(numbers) try: number = int(input("請輸入一個整數->:")) collatz(number) except ValueError: print("please input a integer number")
Python編程快速上手-讓繁瑣工作自動化 第三章 函數習題及其答案