码迷,mamicode.com
首页 > 编程语言 > 详细

Python编程快速上手-让繁琐工作自动化 第三章 函数习题及其答案

时间:2018-04-28 23:54:07      阅读:997      评论:0      收藏:0      [点我收藏+]

标签:作用域   自动化   为什么   数据类型   验证   数据   函数调用   编写程序   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 + 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编程快速上手-让繁琐工作自动化 第三章 函数习题及其答案

标签:作用域   自动化   为什么   数据类型   验证   数据   函数调用   编写程序   cep   

原文地址:https://www.cnblogs.com/bjx2020/p/8969862.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!