標籤:範圍 自動化 為什麼 資料類型 驗證 資料 函數調用 編寫程式 cep
第三章 函數習題及其答案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 + 1print(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編程快速上手-讓繁瑣工作自動化 第三章 函數習題及其答案