python第五章课后编程题答案_Python核⼼编程-第五章课后习
5-1 整形 讲讲 Python 普通整型和长整型的区别
答:在2.7版本基本淡化了区别。真要区分的话,普通整型是32位或者64位,⽽长整型只与PC内存有关,很⼤就是了
5-2 运算符
(a) 写⼀个函数,计算并返回两个数的乘积
(b) 写⼀段代码调⽤这个函数,并显⽰它的结果。
答:
a)
def mul(a,b):
return a * b
完整三角函数值对照表
if __name__ == "__main__":
a = float(raw_input("Please enter first num:"))
b = float(raw_input("Please enter another num:"))
print 'The result is %s' % mul(a,b)
编写的过程中发现⾃⼰经常忘记  raw_input()  函数的内部的引号,这个要注意,结果如下
Please enter first num:4
Please enter another num:5
redis关闭持久化The result is 20.0
其中很多问ti:输⼊的是字符串怎么办;输⼊复数怎么办都需要考虑的
b)
答:注,a)⽂件我的命名是C5_2_a.py,先前直接命名的是5_2_a.py,⼀直⾏不通后来想起来了,Pyt
hon的命名⽅法不允许开头是数字前期准备⼯作是在powershell中⼀直cd到C5_2_a这个⽂件的根⽬录,然后再输⼊Python进⼊到交互模式
PS C:\Users\Administrator> cd mystuff
PS C:\Users\Administrator\mystuff> cd exercise
PS C:\Users\Administrator\mystuff\exercise> cd chapter5
PS C:\Users\Administrator\mystuff\exercise\chapter5> python
>>> from C5_2_a import mul
>>> mul(3,4)
12
5-3 标准类型运算符. 写⼀段脚本,输⼊⼀个测验成绩,根据下⾯的标准,输出他的评分成绩(A-F)。
A: 90–100
B: 80–89
C: 70–79
D: 60–69
F: <60
答:
def score_div(num):
if 90<=num<=100:
return 'A'
elif 80<=num<=89:
return 'B'
elif 70<=num<=79:
return 'C'
elif 60<=num<=69:
return 'D'
else:
return 'F'
在交互模式中执⾏(其⽂件名是C5_3.py)
>>> from C5_3 import *
>>> score_div(79)
continue语句的定义'C'
看到⼤神⽤⼀个叫    表格驱动法 的⽅法处理连环if elif的问ti,以后留意⼀下
5-4 取余。判断给定年份是否是闰年。使⽤下⾯的公式:⼀个闰年就是指它可以被 4 整除,但不能被 100 整除, 或者它既可以被 4 ⼜可以被 100 整除。⽐如 1992,1996 和 2000 年是闰年,但 1967 和 1900 则不是闰年。下⼀个是闰年的整世纪是 2400 年。
答:
⾸先⼩⼩吐槽⼀下ti⽬,闰年不是整百的能被4整除,整百的必须要被400整除才⾏。ti⽬说:
既可以被 4 ⼜可以被 100 整除
请问,1900能否满⾜上述条件?它是闰年吗?显然不是闰年
def leap_year(a):
if ((a%4 == 0) and (a%100 != 0)) or (a%400 == 0):
return '%s is a leap year.' % a
else:
return '%s is not a leap year.' % a
以上在检测的时候,发现from C5_4 import *这个语法,如果脚本做了修改,需要重新关闭shell,在打开操作,否则⼀直import的以前的函数
5-5 取余。取⼀个任意⼩于 1 美元的⾦额,然后计算可以换成最少多少枚硬币。硬币有 1美分,5 美分,10 美分,25 美分四种。1 美元等于 100 美分。举例来说,0.76 美元换算结果应该是 3 枚 25 美分, 1 枚 1 美分。类似 76 枚 1 美分,2 枚 25 美分+2 枚 10 美分+1 枚 5 美分+1枚 1 美分这样的结果都是不符合要求的。
答:
def changes(num):
n_25,n_10,n_5,n_1 = 0,0,0,0
n_25 = (num - num % 25)/25
n_10 = (num - n_25 * 25)/10
n_5 = (num - n_25 * 25 - n_10 * 10)/5
n_1 = num - n_25 * 25 - n_10 * 10 - n_5 * 5
return n_25 + n_10 + n_5 + n_1
以上这种⽅法⽐较⽔,看了⼤神的可以⽤divmod()函数
def changes(money):
list = [25,10,5,1]
count = 0
for i in list:
result = divmod(money,i)
count += result[0]
money = result[1]
涨姿势了
5-6 算术。写⼀个计算器程序 你的代码可以接受这样的表达式,两个操作数加⼀个运算符:N1 运算符 N2. 其中 N1 和 N2 为整数或浮点数,运算符可以是+, -, *, /, %, ** 分别表⽰加法,减法, 乘法, 整数除,取余和幂运算。计算这个表达式的结果,然后显⽰出来。提⽰:可以使⽤字符串⽅法 split(),但
不可以使⽤内建函数 eval().
答:
不知道这个ti⽬的具体意义是⼲嘛的~
def calc(newstr):
num = newstr.split(" ")
if num[1] == '+':
return float(num[0]) + float(num[2])
elif num[1] == '-':
return float(num[0]) - float(num[2])
elif num[1] == '*':
return float(num[0]) * float(num[2])
elif num[1] == '/':
return float(num[0]) / float(num[2])
elif num[1] == '%':
return float(num[0]) % float(num[2])
elif num[1] == '**':
return float(num[0]) ** float(num[2])
else:
return 'error'
这个程序很简单,但是⽤了我⼀个半番茄
为什么呢?因为从这⾥复制到note++缩进有问ti,很⼤的问ti,所以以后写的话⼀定要在note++写完复制到这⾥
怎么发现的呢?可以⽤note++⾥⾯那个+,看是不是应该是在⼀个代码块⾥⾯
运⾏⽆误~
python基础代码练习5-7 直接跳过,这个也不难
5-8 ⼏何。计算⾯积和体积:
(a) 正⽅形和⽴⽅体
(b) 圆和球
答:
from math import *
def square(a):
return 'The aera of square is %s' % (a**2)
def cubic(a):
return 'The volume of cube is %s' % (a**3)
随机数字预测规律
def circular(a):
return 'The aera of circular is %s' % (pi*a**2)
def spere(a):
return 'The volume of spere is %s' % (4/3*pi*a**3)
⽐较常规,唯⼀需要注意的是需要导⼊圆周率pi,原来在C5_8.py中导⼊了pi,在交互模式直接“from C5_8 import *”就不必在调⽤“from math imort *”了
5–9. 数值形式 回答下⾯关于数值格式的问ti:
(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
答:
a)17+32 本来就等于49.这个没啥好解释的。⽽017+32=47,和017+032=41因为前⾯加了个0就代表他是⼋进制的,我们看到的显⽰是⼗进制
b)这个是⼩学脑筋急转弯吗?后边不是数字1,⽽是⼩写的字母l,觉得这个有点侮辱智商
5-10 转换。写⼀对函数来进⾏华⽒度到摄⽒度的转换。转换公式为 C = (F - 32) * (5 / 9)应该在这个练习中使⽤真正的除法, 否则你会得到不正确的结果。
答:
def ftoc(f):
return (float(f)-32) * (5.0/9)
亲测⽆误
5-11 取余。(a) 使⽤循环和算术运算,求出 0-20 之间的所有偶数
(b) 同上,不过这次输出所有的奇数
(c) 综合 (a) 和 (b), 请问辨别奇数和偶数的最简单的⽅法是什么?
(d) 使⽤(c)的成果,写⼀个函数,检测⼀个整数能否被另⼀个整数整除。 先要求⽤户输⼊两个数,然后你的函数判断两者是否有整除关系,根据判断结果分别返回 True 和 False;
mysql insert into 的value答:
a)
for i in range(0,21):
if i % 2 == 0:
print i,
b)
for i in range(0,21):
if i % 2 != 0:
print i,
c)
能否被2整除
d)
def divb(a,b):
if a % b == 0 or b % a == 0:
return True
else:
return False

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。