《python编程快速上手 让繁琐工作自动化》第三章习题+实践答案

习题

1.为什么在程序中加入函数会有好处?
答:函数减少了重复的代码。这让程序更短,更容易阅读,更容易修改
2.函数中的代码何时执行:在函数被定义时,还是在函数被调用时?
答:函数中的代码在函数被调用时执行,而不是在函数定义时。
3.什么语句创建一个函数?
答:def
4.一个函数和一次函数调用有什么区别?
答:函数包含def语句和在def子句中的代码。函数调用让程序执行转到函数内,函数调用求值为该函数的返回值。
5.Python 程序中有多少全局作用域?有多少局部作用域?
答:在调用一个函数时,创建了一个全局函数和一个局部作用域。
6.当函数调用返回时,局部作用域中的变量发生了什么?
答:当函数调用返回时,这次调用的局部作用域被销毁,其中所有的变量都被遗忘了。
7.什么是返回值?返回值可以作为表达式的一部分吗?
答:返回值是函数调用求值的结果。像所有值一样,返回值可以作为表达式的一部分。
8.如果函数没有返回语句,对它调用的返回值是什么?
答:None
9.如何强制函数中的一个变量指的是全局变量?
答:global语句
10.None 的数据类型是什么?
答:NoneType 数据类型
11.import areallyourpetsnamederic 语句做了什么?
答:import语句导入了areallyourpetsnamederic模块
12.如果在名为spam 的模块中,有一个名为bacon()的函数,在引入spam 后,如何调用它?
答:sopm.bacon()
13.如何防止程序在遇到错误时崩溃?
答:将可能导致错误的代码行放在一个try和except语句中。
14.try 子句中发生了什么?except 子句中发生了什么?
答:可能出错的语句被放在try 子句中。如果错误发生,程序执行就转到接下来的except 子句开始处。

实践项目

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,它就是奇数。

def collatz(number):
    if number==1:
        return 1
    elif number%2==0: 
        print("result:"+str(number//2))       
        return number//2
    elif number%2==1:
        print("result:"+str(3 * number + 1))
        return 3 * number + 1
    
while True:    
    number=int(input("Please input a number:"))
    result=collatz(number)
    if result==1:
        print("Game Over!")
        break

2.验证输入
在前面的项目中添加try和except语句,检测用户是否输入了一个非整数的字符串。正常情况下,int()函数在传入一个非整数字符串时,会产生ValueError错误,比如int(‘puppy’)。在except子句中,向用户输出一条信息,告诉他们必须输入一个整数。

def collatz(number):
    if number==1:
        return 1
    elif number%2==0:
        print("result:"+str(number//2))
        return number//2
    elif number%2==1:
        print("result:"+str(3 * number + 1))
        return 3 * number + 1
    
while True:
    try:
        number=int(input("Please input a number:"))
        result=collatz(number)
        if result==1:
            print("Game Over!")
            break
    except ValueError:
        print("please input a integer number")
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值