《Python核心编程》第5章 习题

来源:互联网 发布:网络与现实的性格差异 编辑:程序博客网 时间:2024/05/17 22:57

第4章无编程题故略过。

5-2.操作符。
(a)写一个函数,计算并返回两个数的乘积。
(b)写一段代码调用这个函数,并显示它的结果。

def mutiple(x, y):    return x*yif __name__=="__main__":    a = int(raw_input("input a number: "))    b = int(raw_input("input a number: "))    print mutiple(a,b)

5-3.标准类型操作符。写一段脚本,输入一个测验成绩,根据下面的标准,输出他的评分成绩(A-F)。
A:90~100   B:80~89   C:70~79   D:60~69   F:<60

while 1:     number=int(raw_input('enter a number between 1 and 100: '))     if number<60:         print "F"     elif 60<=number<=69:         print "D"     elif 70<=number<=79:         print "C"     elif 80<=number<=89:         print "B"     elif 90<=number<=100:         print "A"     else:         print "wrong number,please input again"         break

5-4.取余。判断给定年份是否是闰年。使用下面的公式。
一个闰年就是指它可以被4整除,但不能被100整除,或者它既可以被4又可以被100整除。比如1992年、1996年和2000年是闰年,但1967年和1900年则不是闰年。下一个是闰年的整世纪是2400年。

while 1:     year=int(raw_input('enter a year between 1000 and 9999: '))     if year<1000 or year>9999:         break     elif (year%4==0 and year%100!=0) or (year%400==0):         print "leap year"     else:         print "not leap year"

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美分这样的结果都是不符合要求的。

while 1:     coin=int(raw_input('enter a coin between 1 and 100: '))     if coin<1 or coin>99:         break     n25=coin/25     coin=coin-25*n25     n10=coin/10     coin=coin-10*n10     n5=coin/5     coin=coin-5*n5     n1=coin     print '25 cent: %d \n10 cent: %d \n5 cent: %d \n1 cent: %d'%(n25,n10,n5,n1)

5-6   算术。写一个计算器程序。你的代码可以接受这样的表达式,两个操作数加一个操作符:N1操作符N2。其中N1和N2为整型或浮点型,操作符可以是+、-、*、/、%、**,分别表示加法、减法、乘法、整型除、取余和幂运算。计算这个表达式的结果,然后显示出来。提示:可以使用字符串方法split(),但不可以使用内建函数eval()。

while 1:    print "number1 (+|-|*|/|%|**) number2"    expression=raw_input('please input a expression: ')    if '+' in expression:        a,b=expression.split('+',1)        print float(a)+float(b)    elif '-' in expression:        a,b=expression.split('-',1)        print float(a)-float(b)    elif '**' in expression:        a,b=expression.split('**',1)        print float(a)**float(b)    elif '/' in expression:        a,b=expression.split('/',1)        print float(a)/float(b)    elif '%' in expression:        a,b=expression.split('%',1)        print float(a)%float(b)    elif '*' in expression:        a,b=expression.split('*',1)        print float(a)*float(b)    else:        print "wrong expression"        break

5-7.营业税。随意取一个商品金额,然后根据当地营业税额度计算应该交纳的营业税。

price=float(raw_input('please input a earn price: '))    print 'your tax is %10.2f' %round(price*0.2,2)

5-8.几何。计算面积和体积。
(a)正方形和立方体   (b)圆和球

num=float(raw_input('please input a real number: '))print 'the area of square is %f' %(num*num)print 'the area of circle is %f' %(math.pi*num*num)print 'the cubage of cube is %f' %(num**3)print 'the cubage of sphere is %f' %(math.pi*(num**3)*3/4.0)

5-10.转换。写一对函数来进行华氏度到摄氏度的转换。转换公式为C = (F - 32) * (5 / 9)应该在这个练习中使用真正的除法,否者你会得到不正确的结果。

def F2C(tem):    Fahrenheit=float(tem)    Celsius=(Fahrenheit-32)*(5/9.0)    print '%fF equals to %fC°' %(Fahrenheit,Celsius)

5-11.取余。
(a)使用循环和算术运算,求出0~20之间的所有偶数。
(b)同上,不过这次输出所有的奇数。
(c)综合(a)和(b),请问辨别奇数和偶数的最简单的办法是什么?
(d)使用(c)的成果,写一个函数,检测一个整型能否被另一个整型整除。现要求用户输入两个数,然后你的函数判断两者是否有整除关系,根据判断结果分别返回True和False。

for num in range(0,21):    if num%2==0:        print '%d is even' %num    else:        print '%d is odd' %numdef divide(a,b):    if a==0 and b==0:        print 'wrong input number'        return    elif b==0:        a,b=b,a    if a<b and a!=0:        if b%a==0:            print 'true'        else:            print 'false'    else:        if a%b==0:            print 'true'        else:            print 'false'

5-12.系统限制。写一段脚本确认一下你的Python所能处理的整型、长整型、浮点型和复数的范围。

print sys.maxintprint -sys.maxint-1print sys.float_infoprint sys.long_info

5-13 转换。写一个函数把由小时和分钟表示的时间转换为只用分钟表示的时间。

print "time format as HH:MM"timestr=raw_input('please input a time: ')def totalmin(time):    HH,MM=time.split(':',1)    print '%d total minutes' %(int(HH)*60+int(MM))totalmin(timestr)


5-14 银行利息。写一个函数,以定期存款利率为参数, 假定该账户每日计算复利,请计算并返回年回报率。

复利: 最终金额=本金*(1+第1期报酬率)*(1+第2期报酬率)*(1+第3期报酬率)* ….. *(1+第N期报酬率)
年回报率 = (1+第1期报酬率)*(1+第2期报酬率)*(1+第3期报酬率)* ….. *(1+第N期报酬率)

dayrate=float(raw_input("input a rate "))print 'a year rate of earn is %f' %((1+dayrate)**365-1)

5–15.最大公约数和最小公倍数。请计算两个整数的最大公约数和最小公倍数。

最大公约数,用相除法,求得余数,直到一个数为0,循环结束
最小公倍数就是两个数的乘积除以最大公约数

def gcd(a,b):    while(a>0):        c=int(a)        a=int(b)%a        b=c    print 'gcd is %d' %bdef lcm(a,b):    return int(a)*int(b)/gcd(a,b)

5-16 家庭财务。给定一个初始金额和月开销数, 使用循环,确定剩下的金额和当月的支出数, 包括最后的支出数。

balance=float(raw_input("Enter opening balance: "))paid=float(raw_input("Enter monthly payment: "))def payment(balance,paid):    print '    Amount Remaining'    print 'Pymt#   Paid    Balance'    print '-----   -----   ------'    b=balance    m=int(b/paid)    b=b-m*paid    while(b>0):        m+=1        b=b-paid    print '%d%11.2f%8.2f' %(0,0.00,balance)    for month in range(1,m):        print '%d%11.2f%8.2f' %(month,paid,balance-month*paid)    print '%d%11.2f%8.2f' % (m,(balance-paid*(m-1)),0)payment(balance,paid)

5-17 随机数。熟读随机数模块然后解下面的题:
生成一个有 N 个元素的由随机数 n 组成的列表, 其中 N 和 n 的取值范围分别为: (1 <N <= 100), (0 <= n <= 231 -1)。然后再随机从这个列表中取 N (1 <= N <= 100)个随机数出来, 对它们排序,然后显示这个子集。

while 1:    N1=random.randint(2,100)    N2=random.randint(1,100)    if N1>N2:        breakprint 'N1 is %d, N2 is %d' %(N1,N2) list1=[]for i in range(0,N1):    n=random.randint(0,2**31-1)    list1.append(n)    print list1list2=random.sample(list1,N2)list2.sort()print list2


1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝不愿意开口说话怎么办 自闭症孩子不爱学习怎么办 宝宝不独立走路怎么办 六个月宝宝不认人怎么办 小孩隔奶奶涨怎么办 小孩段奶奶涨怎么办 1岁半还不会说话怎么办 孩子嗓子哑了怎么办 小朋友嗓子哑了怎么办 4周岁宝宝拉肚子怎么办 小孩不肯拉小便怎么办 做销售不爱说话怎么办 我伤害了朋友怎么办 三岁发音不准怎么办 心里憋不住话怎么办 自己不长记性怎么办 孩子不愿意开口说话怎么办 孩子不爱开口说话怎么办 宝宝犟脾气不好怎么办 小孩说话不算话怎么办 孩子说话不算话怎么办 孩子故意不好好说话怎么办 小孩说话吐字不清楚怎么办 腿老是抽筋是怎么办 半夜睡觉脚抽筋怎么办 我不爱说话内向怎么办 小孩子吐字不清怎么办 宝宝前边头发少怎么办 宝宝咬嘴唇龅牙怎么办 小孩老是咬下唇怎么办 五月小孩掉下床怎么办 小孩说话夹舌头怎么办 小孩自闭不说话怎么办 孩子突然不说话怎么办 孩子说话语速慢怎么办 做磁共振不睡觉怎么办 宝宝吃饭不多怎么办 孩子吃饭爱说话怎么办 孩子吃饭喜欢说话怎么办 小孩子讲话嘴巴歪怎么办 小孩有自闭倾向怎么办