Python編程快速上手-讓繁瑣工作自動化 第三章 函數習題及其答案

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.