python核心编程第5章课后练习题
5-2. 操作符
(a)写一个函数,计算并返回两个数的乘积
(b)写一段代码调用这个函数,并显示它的结果
def twoNumRide(a, b):
'计算并返回两个数的乘积'
c = a * b
return c
if __name__ == '__main__':
cj = twoNumRide(2, 3)
print(cj)
----------------------------------------------------------------------------------------------------------------
5-3. 标准类型操作符,写一段脚本,输入一个测验成绩,根据下面标准,输出他们的评分成绩(A-F)
A:90~100 B:80~89 C:70~79 D:60~69 F<60
def queryScore(num):
"""
5-3. 标准类型操作符,写一段脚本,输入一个测验成绩,根据下面标准,输出他们的评分成绩(A-F)
A:90~100 B:80~89 C:70~79 D:60~69 F<60
:param num:
:return:
"""
if 90<= num <= 100:
print('A')
elif 80<= num <=89:
print('B')
elif 70<= num <=79:
print('C')
elif 60<= num <=69:
print('D')
else:
print('F')
if __name__ == '__main__':
score = input('请输入0~100的分数:')
queryScore(int(score))
--------------------------------------------------------------------------------------
5-4 取余。判定给的年份是否是闰年,使用以下公式。
一个闰年就是指它可以被4整除,但是不能被100整除,或者它既可以被4又可以被100整除。
def isLeapYear(year):
"""5-4 取余。判定给的年份是否是闰年,使用以下公式。
一个闰年就是指它可以被4整除,但是不能被100整除,或者它既可以被4又可以被100整除。
"""
if (year%4 == 0 & year%100 !=0) | year%400 == 0:
print('is leap year')
else:
print('not leap year')
if __name__ == '__main__':
isLeapYear(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美分 这样的结果都是不符合要求的。
def dollerToCent(doller):
"""
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美分 这样的结果都是不符合要求的。
:param year:
:return:
"""
cent = int(doller *100)
(N25, lft) = divmod(cent, 25)
print('%s $可以换成:' %doller)
if N25 >0 :
print('25美分有 %d 个' % N25)
(N10,lft) = divmod(lft, 10)
if N10 >0:
print('10美分有 %d 个' % N10)
(N5,lft) = divmod(lft, 5)
if N5 >0:
print('5美分有 %d 个' % N5)
(N1,lft) = divmod(lft, 1)
if N1 >0:
print('1美分有 %d 个' % N1)
if __name__ == '__main__':
dollerToCent(0.76)

5-6. 算数。写一个计算器程序。你的代码可以接受这样的表达式,两个操作数加一个操作符:N1操作符N2.其中N1和N2为整型或浮点型,操作符可以使+、-、*、/、%、**计算这个表达式结果,然后显示出来。提示:可用字符串split(),但不可使用内建函数eval()
def cal(expstr):
"""
5-6. 算数。写一个计算器程序。你的代码可以接受这样的表达式,两个操作数加一个操作符:
N1操作符N2.其中N1和N2为整型或浮点型,操作符可以使+、-、*、/、%、**计算这个表达式结果,然后显示出来。提示:可用字符串split(),但不可使用内建函数eval()
:return:
"""
if '+' in expstr:
[a,b] = expstr.split('+',1)
return float(a) + float(b)
elif '-' in expstr:
[a, b] = expstr.split('-', 1)
return float(a) - float(b)
elif '**' in expstr:
[a, b] = expstr.split('**', 1)
return float(a) ** float(b)
elif '/' in expstr:
[a,b] = expstr.split('/', 1)
return float(a) / float(b)
elif '%' in expstr:
[a,b] = expstr.split('%', 1)
return float(a) % float(b)
elif '*' in expstr:
[a,b] = expstr.split('*', 1)
return float(a) * float(b)
else:
print('wrong expstr')
if __name__ == '__main__':
# dollerToCent(0.1)
print(cal('2%4'))
----------------------------------------------------------------------------------------------------------------------------
5-7. 营业税。随意取一个商品金额,然后根据当地营业税额度计算应该交纳的营业税。
def calSalesTax(amount ,tax=0.1):
"""5-7. 营业税。随意取一个商品金额,然后根据当地营业税额度计算应该交纳的营业税。"""
return amount * tax
if __name__ == '__main__':
print(calSalesTax(100, 0.2))
-------------------------------------------------------------------------------------------------------------------------------
5-8.几何:计算面积和体积
def calSquareAndCube(sl):
"""
几何:计算面积和体积
a、正方形和立方体
b、圆和球
:return:
"""
s = sl **2
v = sl **3
ys = math.pi * (sl **2)
qv =(4/3)*math.pi*(sl**3)
return s,v,ys,qv
if __name__ == '__main__':
print(calSquareAndCube(3))
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
5-11 取余
求0~20以内所以的奇偶数
def displayEven(num):
"""5-11 取余
求0~20以内所以的奇偶数
"""
i = 0
while i <=num:
if i % 2 == 0:
print('偶数为%d'%i)
else:
pass
i = i+1
(d)
def displayEven(a,b):
"""5-11 取余
是否能整除
"""
if a % b == 0:
print('true')
else:
print('false')
--------------------------------------------------------------------------------------------------------------
5-12.
系统限制。写一段脚本确认一下你的Python所能处理的整型、长整型、浮点型和复数的范围
# 5-12.
# 系统限制。写一段脚本确认一下你的Python所能处理的整型、长整型、浮点型和复数的范围
print(sys.float_info)
-------------------------------------------------------------------------------------------------------------
5-13.
转换。写一个函数把小时和分钟所表示的时间转换成为只用分钟表示的时间。
def displayTimeMin():
"""5-13.
转换。写一个函数把小时和分钟所表示的时间转换成为只用分钟表示的时间。
"""
time = input('请输入一个时间,格式如HH:MM')
[h, m]= time.split(':', 1)
min = int(h) *60 + int(m)
return time, min
----------------------------------------------------------------------------------------------------------------
5-15.
最大公约数和最小公倍数。请计算两个整型的最大公约数和最小公倍数。
def calMaxCommonDivisor(a,b):
"""
5-15.
最大公约数和最小公倍数。请计算两个整型的最大公约数和最小公倍数。
:return:最大公约数和最小公倍数(用更相减损法求最大公约数)
"""
while(1):
if(a > b):
a = a-b
elif(a < b):
b = b -a
else:
return a
def leastCommultiple(a,b):
"""
最小公倍数就是几个数公有的倍数中最小的一个。
6的倍数有6,12,18,24,……
4和6 公倍数 12,18……, 所以4和6的最小公倍数是12 。
如果求a和b的最小公倍数,可以先求出它们的最大公约数,最小公倍数就是 a*b/最大公约数
:return:
"""
mcd = maxCommonDivison(a,b)
lcm = (a*b)/mcd
return lcm
--------------------------------------------------------------------------------------------
5-16.
家庭财务。给定一个初始金额和月开销数,使用循环,确定剩下的金额和当月的支出数,包括最后的支出数。Payment()函数会用到初始金额和月额度,输出结果应该类似下面的格式(例子中的数字仅用于演示)。
def payMent(balance, monpay):
"""
家庭财务。给定一个初始金额和月开销数,使用循环,确定剩下的金额和当月的支出数,包括最后的支出数。
Payment()函数会用到初始金额和月额度,输出结果应该类似下面的格式(例子中的数字仅用于演示)。
:return:
"""
print('Amount Remaining ')
print('Pymt# Paid Balance')
print('----- ----- -----')
pymt = 0
paid = 0.00
while balance > monpay:
print (' %d $%.2f $%.2f' % (pymt, paid, balance))
pymt = pymt + 1
paid = monpay
balance = balance - monpay
else:
print(' %d $%.2f $%.2f' % (pymt, balance, 0))
if __name__ == '__main__':
payMent(100.00, 16.13)
5-17.
*随机数。熟读随机数模块然后解下面的题。生成一个有N个元素的由随机数n组成的列表,其中N和n的取值范围分别为(1 < N <= 100)和(0 <= n <= 2**31 - 1)。然后再随机从这个列表中取N(1 <= N <= 100)个随机数出来,对他们排序,然后显示这个子集。
def orderRange():
"""
*随机数。熟读随机数模块然后解下面的题。生成一个有N个元素的由随机数n组成的列表,其中N和n的取值范围分别为(1 < N <= 100)和(0 <= n <= 2**31 - 1)。
然后再随机从这个列表中取N(1 <= N <= 100)个随机数出来,对他们排序,然后显示这个子集。
:return:
"""
# 生成一个长度为N,内容为n的列表
N = random.randint(1,100)
n = random.randint(0, 2**31-1)
Nlist = []
for i in range(N):
Nlist.append(n)
print(Nlist)
# 从列表取N个随机数排序并显示
clist =[]
c = random.randint(1,N)
print(c)
for i in range(c):
j = random.randint(0, N -1)
clist.append(Nlist[j])
clist.sort()
print(clist)

浙公网安备 33010602011771号