《Python核心编程》第二版第五章答案
2014-07-31 15:30
351 查看
本人python新手,答案自己做的,如果有问题,欢迎大家评论和讨论!
更新会在本随笔中直接更新。
5-1.整型。讲讲Python普通整型和长整型的区别。
Python的标准整形类型是最通用的数字类型。在大多数32位机器上,标准整形类型的取值范围是-2**32~2**32 - 1。
Python的长整型类型能表达的数值仅仅与你的机器支持的(虚拟)内存大小有关,换句话说,Python能轻松表达很大的整数。
长整型类型是标准整形类型的超集,当程序需要使用比标准整形更大的整型时,可以使用长整型类型,在整型值后面添加L,表示这个为长整型,这两种整形类型正在逐渐统一为一种。
5-2.操作符。
(a)写一个函数,计算并返回两个数的乘积。
(b)写一段代码调用这个函数,并显示它的结果。
5-3.标准类型操作符。写一段脚本,输入一个测验成绩,根据下面的标准,输出他的评分成绩(A-F)。
A:90~100
B:80~89
C:70~79
D:60~69
F:<60
5-4.取余。判断给定年份是否是闰年。使用下面的公式。
一个闰年就是指它可以被4整除,但不能被100整除,或者它既可以被4又可以被100整除。比如1992年、1996年和2000年是闰年,但1967年和1900年则不是闰年。下一个是闰年的整世纪是2400年。
5-5.取余。取一个任意小于1美元的金额,然后计算可以换成最少多少枚硬币。硬币有1美分、5美分、10美分、25美分4种。1美元等于100美分。举 例来说,0.76美元计算结果应该是3枚25美分,1枚1美分。类似于76枚1美分,2枚25美分+2枚10美分+1枚5美分+1枚1美分这样的结果都是不符合要求的。
5-6 算术。写一个计算器程序。你的代码可以接受这样的表达式,两个操作数加一个操作符:N1操作符N2。其中N1和N2为整型或浮点型,操作符可以是+、 -、*、/、%、**,分别表示加法、减法、乘法、整型除、取余和幂运算。计算这个表达式的结果,然后显示出来。提示:可以使用字符串方法 split(),但不可以使用内建函数eval()。
5-8.几何。计算面积和体积。
(a)正方形和立方体
(b)圆和球
5-10.转换。写一对函数来进行华氏度到摄氏度的转换。转换公式为C = (F - 32) * (5 / 9)应该在这个练习中使用真正的除法,否者你会得到不正确的结果。
5-11.取余。
(a)使用循环和算术运算,求出0~20之间的所有偶数。
(b)同上,不过这次输出所有的奇数。
(c)综合(a)和(b),请问辨别奇数和偶数的最简单的办法是什么?
(d)使用(c)的成果,写一个函数,检测一个整型能否被另一个整型整除。现要求用户输入两个数,然后你的函数判断两者是否有整除关系,根据判断结果分别返回True和False。
5-13 转换。写一个函数把由小时和分钟表示的时间转换为只用分钟表示的时间。
5–15.最大公约数和最小公倍数。请计算两个整数的最大公约数和最小公倍数。
5-17 随机数。熟读随机数模块然后解下面的题:
生成一个有 N 个元素的由随机数 n 组成的列表, 其中 N 和 n 的取值范围分别为: (1 <
N <= 100), (0 <= n <= 231 -1)。然后再随机从这个列表中取 N (1 <= N <= 100)个随机数
出来, 对它们排序,然后显示这个子集。
更新会在本随笔中直接更新。
5-1.整型。讲讲Python普通整型和长整型的区别。
Python的标准整形类型是最通用的数字类型。在大多数32位机器上,标准整形类型的取值范围是-2**32~2**32 - 1。
Python的长整型类型能表达的数值仅仅与你的机器支持的(虚拟)内存大小有关,换句话说,Python能轻松表达很大的整数。
长整型类型是标准整形类型的超集,当程序需要使用比标准整形更大的整型时,可以使用长整型类型,在整型值后面添加L,表示这个为长整型,这两种整形类型正在逐渐统一为一种。
5-2.操作符。
(a)写一个函数,计算并返回两个数的乘积。
(b)写一段代码调用这个函数,并显示它的结果。
def x(a, b): ... c = a * b ... return c ... x(2, 3)
5-3.标准类型操作符。写一段脚本,输入一个测验成绩,根据下面的标准,输出他的评分成绩(A-F)。
A:90~100
B:80~89
C:70~79
D:60~69
F:<60
#!/usr/bin/python def grade(num): if 90 <= num <= 100: print 'A' elif 80 <= num <= 89: print 'B' elif 70 <= num <= 79: print 'C' elif 60 <= num <= 69: print 'D' elif 0 <= num <= 59: print 'F' else: print " The num is invalid." try: num = int(raw_input("Input a num:")) grade(num) except ValueError, e: print "You must input digits."
5-4.取余。判断给定年份是否是闰年。使用下面的公式。
一个闰年就是指它可以被4整除,但不能被100整除,或者它既可以被4又可以被100整除。比如1992年、1996年和2000年是闰年,但1967年和1900年则不是闰年。下一个是闰年的整世纪是2400年。
#!/usr/bin/python try: year = int(raw_input("Please input a year:")) if year % 4 == 0 and year % 100 != 0: print "%d is a leap year." %year elif year % 400 == 0: print "%d is a leap year." %year else: print "%d is not a leap year." %year except ValueError, e: print "You must input a digits."
5-5.取余。取一个任意小于1美元的金额,然后计算可以换成最少多少枚硬币。硬币有1美分、5美分、10美分、25美分4种。1美元等于100美分。举 例来说,0.76美元计算结果应该是3枚25美分,1枚1美分。类似于76枚1美分,2枚25美分+2枚10美分+1枚5美分+1枚1美分这样的结果都是不符合要求的。
#!/usr/bin/python try: dollar = float(raw_input("Input the money that less than 1 dollar:")) if dollar >= 1: print "money is too large." elif 0 < dollar < 1: temp = int(dollar * 100) (N25, temp) = divmod(temp, 25) print "%d 25 coins." %N25 (N10, temp) = divmod(temp, 10) print "%d 10 coins." %N10 (N5, temp) = divmod(temp, 5) print "%d 5 coins." %N5 (N1, temp) = divmod(temp, 1) print "%d 1 coins." %N1 else: print "You must input larger than 0." except ValueError, e: print "You must input a digits."
5-6 算术。写一个计算器程序。你的代码可以接受这样的表达式,两个操作数加一个操作符:N1操作符N2。其中N1和N2为整型或浮点型,操作符可以是+、 -、*、/、%、**,分别表示加法、减法、乘法、整型除、取余和幂运算。计算这个表达式的结果,然后显示出来。提示:可以使用字符串方法 split(),但不可以使用内建函数eval()。
#!/usr/bin/python print "Enter the expression" expression = raw_input('>') if len(expression.split('+')) == 2: try: splitExpression = expression.split('+') m = float(splitExpression[0]) n = float(splitExpression[1]) print m + n except ValueError, e: print "Input ValueError !" elif len(expression.split('-')) == 2: try: splitExpression = expression.split('+') m = float(splitExpression[0]) n = float(splitExpression[1]) print m - n except ValueError, e: print "Input ValueError !" elif len(expression.split('*')) == 2: try: splitExpression = expression.split('*') m = float(splitExpression[0]) n = float(splitExpression[1]) print m * n except ValueError, e: print "Input ValueError !" elif len(expression.split('/')) == 2: try: splitExpression = expression.split('/') m = float(splitExpression[0]) n = float(splitExpression[1]) print m / n except ValueError, e: print "Input ValueError !" elif len(expression.split('%')) == 2: try: splitExpression = expression.split('%') m = float(splitExpression[0]) n = float(splitExpression[1]) print m % n except ValueError, e: print "Input ValueError !" elif len(expression.split('**')) == 2: try: splitExpression = expression.split('**') m = float(splitExpression[0]) n = float(splitExpression[1]) print m ** n except ValueError, e: print "Input ValueError !" else: print "Input Error !"
5-8.几何。计算面积和体积。
(a)正方形和立方体
(b)圆和球
#!/usr/bin/python from math import pi def square(length): area = length ** 2 print "The area of square is %0.2f" %area def cube(length): volume = length ** 3 print "The volume of cube is %0.2f" %volume def circle(radius): area = pi * radius ** 2 print "The area of circle is %0.2f" %area def sphere(radius): volume = 4 * pi * radius ** 2 print "The volume of sphere is %0.2f" %volume if __name__ == "__main__": try: print "*****Direct execute*****" num = float(raw_input("Enter a num:")) square(num) cube(num) circle(num) sphere(num) except ValueError, e: print " Input a invaild num !" if __name__ == "test": try: print "*****Module called*****" num = float(raw_input("Enter a num:")) square(num) cube(num) circle(num) sphere(num) except ValueError, e: print " Input a invaild num !"
5-10.转换。写一对函数来进行华氏度到摄氏度的转换。转换公式为C = (F - 32) * (5 / 9)应该在这个练习中使用真正的除法,否者你会得到不正确的结果。
#!/usr/bin/python def convert(x): c = (x - 32) * (5.0 / 9) print "The temperature of C is %0.2f" %c if __name__ == "__main__": try: m = float(raw_input("Enter the temperature of F:")) convert(m) except ValueError, e: print "Input Error !"
5-11.取余。
(a)使用循环和算术运算,求出0~20之间的所有偶数。
(b)同上,不过这次输出所有的奇数。
(c)综合(a)和(b),请问辨别奇数和偶数的最简单的办法是什么?
(d)使用(c)的成果,写一个函数,检测一个整型能否被另一个整型整除。现要求用户输入两个数,然后你的函数判断两者是否有整除关系,根据判断结果分别返回True和False。
#!/usr/bin/python def even(): for i in range(0,21): if i % 2 == 0: print i, def odd(): for i in range(0,21): if i % 2 <> 0: print i, def div(m, n): if m % n == 0: print "TRUE" else: print "FALSE" if __name__ == "__main__": print "Print the even:" even() print print "Print the odd:" odd() print m = float(raw_input("Enter a num:")) n = float(raw_input("Enter an anoher num:")) div(m, n)
5-13 转换。写一个函数把由小时和分钟表示的时间转换为只用分钟表示的时间。
#!/usr/bin/python def convert(a, b): min = 60*int(a) + int(b) print "min = %d"%min if __name__ == '__main__': hour = raw_input("Enter the time:") try: (h, m) = hour.split(":") convert(h, m) except ValueError, e: print "Input a invaild num !"
5–15.最大公约数和最小公倍数。请计算两个整数的最大公约数和最小公倍数。
#!/usr/bin/python def common_divisor(a, b): for i in range(1, min(a, b) + 1): if a % i == 0 and b % i ==0: m = i print "The common divisor is %d" %m def common_mutiple(i, j): maxnum = max(i, j) while True: if maxnum % i == 0 and maxnum % j ==0: print "The common mutiple is %d" %maxnum break else: maxnum = maxnum + 1 if __name__ == '__main__': try: num1 = int(raw_input("Enter num1:")) num2 = int(raw_input("Enter num2:")) common_divisor(num1, num2) common_mutiple(num1, num2) except ValueError, e: print "Input a invalid num !"
5-17 随机数。熟读随机数模块然后解下面的题:
生成一个有 N 个元素的由随机数 n 组成的列表, 其中 N 和 n 的取值范围分别为: (1 <
N <= 100), (0 <= n <= 231 -1)。然后再随机从这个列表中取 N (1 <= N <= 100)个随机数
出来, 对它们排序,然后显示这个子集。
#!/usr/bin/python import random N = random.randint(2, 100) randlist = random.sample(xrange(0, 2**31 - 1), N) randlist.sort() print randlist
相关文章推荐
- 《Python核心编程》第二版第97页第五章练习 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第97页第五章练习 续一 -Python核心编程答案-自己做的-
- python核心编程(第二版)参考答案(自制)--第五章·数字
- python核心编程(第二版)参考答案(自制)--第六章·序列:字符串、列表和元组(Part2)
- 《Python核心编程》第二版第六章练习题答案
- 《Python核心编程》第二版第六章练习题答案-第六部分
- 《Python核心编程》第二版第八章练习题答案 第二部分
- 鸟哥的Linux私房菜基础学习篇(第二版)第五章课后习题与答案
- python核心编程第2章课后题答案(第二版36页)
- 《Python核心编程》第二版第160页第六章练习 续四 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第三章答案
- 《Python核心编程》第二版第七章练习题答案 第一部分
- 《Python核心编程》第二版第407页第十三章练习 续四 -Python核心编程答案-自己做的-
- python核心编程第3章课后题答案(第二版55页)
- 《Python核心编程》第二版第160页第六章练习 续五 -Python核心编程答案-自己做的-
- 《Python核心编程》中文第二版课后练习3.8答案
- 《Python核心编程》第二版第六章练习题答案-第二部分
- 《Python核心编程》第二版第308页第十一章练习 续五 -Python核心编程答案-自己做的-
- python核心编程第4章课后题答案(第二版75页)
- 《Python核心编程》第二版第209页第八章练习 -Python核心编程答案-自己做的-