第4章无编程题故略过。
5-2.操作符。
(a)写一个函数,计算并返回两个数的乘积。
(b)写一段代码调用这个函数,并显示它的结果。
def mutiple(x, y):
return x*y
if __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' %num
def 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.maxint
print -sys.maxint-1
print sys.float_info
print 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' %b
def 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:
break
print '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 list1
list2=random.sample(list1,N2)
list2.sort()
print list2