python(第二版)第五章答案
2016-10-19 19:22
260 查看
5-1.整型。讲讲Python普通整型和长整型的区别。
Python的标准整形类型是最通用的数字类型。在大多数32位机器上,标准整形类型的取值范围是-2**32~2**32 - 1。
Python的长整型类型能表达的数值仅仅与你的机器支持的(虚拟)内存大小有关,换句话说,Python能轻松表达很大的整数。
长整型类型是标准整形类型的超集,当程序需要使用比标准整形更大的整型时,可以使用长整型类型,在整型值后面添加L,表示这个为长整型,这两种整形类型正在逐渐统一为一种。
5-2.操作符。
(a)写一个函数,计算并返回两个数的乘积。
(b)写一段代码调用这个函数,并显示它的结果。
答:
(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-9. 数值形式 回答下面关于数值格式的问题:
(a) 为什么下面的例子里 17+32 等于 49, 而 017+32 等于 47, 017+032 等于 41?
(b)为什么下面这个表达式我们得到的结果是 134L 而不是 1342 ?
答:
八进制和十进制,长整形和整形
5-10.转换。写一对函数来进行华氏度到摄氏度的转换。转换公式为C = (F - 32) * (5 / 9)应该在这个练习中使用真正的除法,否者你会得到不正确的结果.
5-11.取余。
(a)使用循环和算术运算,求出0~20之间的所有偶数。
(b)同上,不过这次输出所有的奇数。
(c)综合(a)和(b),请问辨别奇数和偶数的最简单的办法是什么?
(d)使用(c)的成果,写一个函数,检测一个整型能否被另一个整型整除。现要求用户输入两个数,然后你的函数判断两者是否有整除关系,根据判断结果分别返回True和False。
答:(a),(b)
(c)辨别偶数和奇数的方法是,该数能否被2整除。
(d)
5-13 转换。写一个函数把由小时和分钟表示的时间转换为只用分钟表示的时间。
5–15.最大公约数和最小公倍数。请计算两个整数的最大公约数和最小公倍数。
5-16 题目好烦,不想写了,大家自己去看,答案在此:
5-17 随机数。熟读随机数模块然后解下面的题:
生成一个有 N 个元素的由随机数 n 组成的列表, 其中 N 和 n 的取值范围分别为: (1 <
N <= 100), (0 <= n <= 231 -1)。然后再随机从这个列表中取 N (1 <= N <= 100)个随机数
出来, 对它们排序,然后显示这个子集。
Python的标准整形类型是最通用的数字类型。在大多数32位机器上,标准整形类型的取值范围是-2**32~2**32 - 1。
Python的长整型类型能表达的数值仅仅与你的机器支持的(虚拟)内存大小有关,换句话说,Python能轻松表达很大的整数。
长整型类型是标准整形类型的超集,当程序需要使用比标准整形更大的整型时,可以使用长整型类型,在整型值后面添加L,表示这个为长整型,这两种整形类型正在逐渐统一为一种。
5-2.操作符。
(a)写一个函数,计算并返回两个数的乘积。
(b)写一段代码调用这个函数,并显示它的结果。
答:
(a)
def mul(a ,b): return a*b
(b)
x(2,6) #或者 def mul(a ,b): return a*b if __name__=='__main__': a = input() b = input() print mul(a, b)
5-3.标准类型操作符。写一段脚本,输入一个测验成绩,根据下面的标准,输出他的评分成绩(A-F)。
A:90~100
B:80~89
C:70~79
D:60~69
F:<60
答:
方法一:
x = input("plz input your score:") if x >= 60: if x >= 70: if x >= 80 : if x >= 90: if x >= 100: print "A" else: print "B" else: print "C" else: print "D" else: print "E" else: print "F"
方法二:
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年。
x = input("plz input year:") if x % 4 == 0 and x % 100 != 0: print " %d 是闰年" % (x) elif x % 400 == 0: print " %d 是闰年" % (x) else: print " %d 不是闰年" % (x)
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美分这样的结果都是不符合要求的。
方法一:(这是我最笨的做法)
y = float(raw_input("input dollors:")) if y >= 1: print "money is too large." else: y = y * 100 a = y // 25 b = (y - a*25) // 10 c = (y - a *25 - b * 10) // 5 d = y - a*25 - b*10 - c*5 s = a + b + c + d print "%d" % (s)
方法二:(定义函数)
def money(num): num = num *100 a = num // 25 b = (num - a *25)//10 c = (num - a* 25 - b *10) //5 d = (num -a * 25 - b * 10 - c * 5) return a+b+c+d n = float(raw_input("input dollors:")) print money(n)
方法三:(这个比较麻烦,是网上某大侠写的,反正我觉得很烦,大家参考一下)
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()。
方法一:(用函数的方法,比较简单)
def test(a,s,b): if s == '+': return a+b elif s == '-': return a-b elif s == '*': return a*b elif s == '/': return a // b elif s == '%': return a%b elif s == '**': return a**b else: return 0 if __name__=='__main__': ss = raw_input("input your expression:") if len(ss) == 3: print test(float(ss[0]),ss[1],float(ss[2])) else: print test(float(ss[0]),ss[1:3],float(ss[3]))
方法二:(特别麻烦,建议不要看)
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)圆和球
import math if __name__=='__main__': ss = input("请输入正方形的长或者园半径:") print '正方形面积:',ss*ss print '立方体面积:',ss*ss*6 print '立方体体积:',ss*ss*ss print '圆面积:',ss*ss*math.pi print '球面积:',ss*ss*math.pi*4 print '球体积:',ss*ss*ss*math.pi*4/3.0
5-9. 数值形式 回答下面关于数值格式的问题:
(a) 为什么下面的例子里 17+32 等于 49, 而 017+32 等于 47, 017+032 等于 41?
>>> 17 + 32 49 >>> 017+ 32 47 >>> 017 + 032 41
(b)为什么下面这个表达式我们得到的结果是 134L 而不是 1342 ?
>>56l + 78l 134L
答:
八进制和十进制,长整形和整形
5-10.转换。写一对函数来进行华氏度到摄氏度的转换。转换公式为C = (F - 32) * (5 / 9)应该在这个练习中使用真正的除法,否者你会得到不正确的结果.
def change(f): return (f-32)*(5.0/9.0) if __name__=='__main__': ss = input("请输入华氏温度:") print change(ss)
5-11.取余。
(a)使用循环和算术运算,求出0~20之间的所有偶数。
(b)同上,不过这次输出所有的奇数。
(c)综合(a)和(b),请问辨别奇数和偶数的最简单的办法是什么?
(d)使用(c)的成果,写一个函数,检测一个整型能否被另一个整型整除。现要求用户输入两个数,然后你的函数判断两者是否有整除关系,根据判断结果分别返回True和False。
答:(a),(b)
x = range(0,21) for i in x: if i % 2 == 0: #输出偶数 print i for i in x: if i % 2 != 0:#输出奇数 print i
(c)辨别偶数和奇数的方法是,该数能否被2整除。
(d)
def num(num1,num2): if (num1%num2==0) or (num2%num1==0): return True else: return False num1 = input("请输入第一个数:") num2 = input("请输入第二个数:") print num(num1,num2)
5-13 转换。写一个函数把由小时和分钟表示的时间转换为只用分钟表示的时间。
def test(h , m): min= h * 60 + m return min while True: h = input("请输入小时:") m = input("请输入分钟:") if (h < 23 and h > -1) and (m < 60 and m > -1): print 'The time is %d minuters' % test (h,m) else: print 'input error'
5–15.最大公约数和最小公倍数。请计算两个整数的最大公约数和最小公倍数。
def gongyueshu(m , n): if m< n: min = m else: min = n for i in range(min , 0 ,-1): if m % i ==0 and n % i ==0: return i return 0 def gongbeishu(m , n): l = gongyueshu(m,n) return m * n / l if __name__ == '__main__': m = input("请输入第一个数:") n = input("请输入第二个数:") print '最大公约数:',gongyueshu(m, n) print '最小公倍数:',gongbeishu(m, n)
5-16 题目好烦,不想写了,大家自己去看,答案在此:
def Payment(cost,total): count = 0 print ' Amount Remaining' print 'Pymt# PaidBalance' print '----- ------ --------' while True: print '%-2d $%.2f $%6.2f'%(count,total,cost) if cost - total >=0: cost = cost-total else: if cost !=0: print '%-2d $%.2f $%6.2f'%(count+1,cost,0) break count += 1 if __name__=='__main__': cost = input('Enter opening balance:') total = input('Enter monthly payment:') Payment(cost,total)
5-17 随机数。熟读随机数模块然后解下面的题:
生成一个有 N 个元素的由随机数 n 组成的列表, 其中 N 和 n 的取值范围分别为: (1 <
N <= 100), (0 <= n <= 231 -1)。然后再随机从这个列表中取 N (1 <= N <= 100)个随机数
出来, 对它们排序,然后显示这个子集。
import random if __name__=='__main__': N = random.randint(1,100) list = [] for i in range(N): n = random.randint(0,2**31-1) list.append(n) list.sort() print list
相关文章推荐
- 《Python核心编程》第二版第97页第五章练习 续一 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第97页第五章练习 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第36页第二章练习 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第36页第二章练习 续二 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第209页第八章练习 续二 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第308页第十一章练习 续三 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第308页第十一章练习 续二 -Python核心编程答案-自己做的-
- 鸟哥的Linux私房菜基础学习篇(第二版)第五章课后习题与答案
- 《Python核心编程》第二版第326页第十二章练习 续一 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第209页第八章练习 -Python核心编程答案-自己做的-
- Python 核心编程(第二版)第八章 练习完整答案[转载]
- 《Python核心编程》第二版第308页第十一章练习 续五 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第36页第二章练习 续三 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第209页第八章练习 续一 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第160页第六章练习 续四 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第36页第二章练习 续一 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第55页第三章练习 续二 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第160页第六章练习 续二 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第230页第九章练习 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第326页第十二章练习 -Python核心编程答案-自己做的-