zoukankan      html  css  js  c++  java
  • Python核心编程(第二版) 第五章习题答案

    w5-1.整型。讲讲Python普通整型和长整型的区别。

    答:Python 的标准整数类型是最通用的数字类型。在大多数 32 位机器上,标准整数类型的取值范围是-2**31到 2**31-1,也就是-2,147,483,648 到 2,147,483,647。如果在 64 位机器上使用 64 位编译器编译 Python,那么在这个系统上的整数将是 64 位。

    Python 的长整数类型能表达的数值仅仅与你的机器支持的(虚拟)内存大小有关。

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

     1 #!/usr/bin/python
     2 
     3 def p(a,b):
     4         c=a*b
     5         print c
     6 
     7 
     8 p(2,3)
     9 p(2,3.)
    10 p(2,2.0+1J)

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

    B:80~89

    C:70~79

    D:60~69

    F:<60

     1 #!/usr/bin/python
     2 
     3 def value(num):
     4         if 90<=num<=100:
     5                 print 'A'
     6         elif 80<=num<=89:
     7                 print 'B'
     8         elif 70<=num<=79:
     9                 print 'C'
    10         elif 60<=num<=69:
    11                 print 'D'
    12         elif num>=0 and num<60:
    13                 print 'F'
    14         else:
    15                 print  "The num is invalid."
    16 
    17 try:
    18         num=int(raw_input("Enter a num:"))
    19         value(num)
    20 except ValueError,v:
    21         print 'You must input digits.'

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

     1 #!/usr/bin/python
     2 
     3 try:
     4         year=int(raw_input("Enter a year:"))
     5         if year%4==0 and year%100<>0:
     6                 print "%d is a leap year."%year
     7         elif year%400==0:
     8                 print "%d is a leap year."%year
     9         else:
    10                 print "%d is not a leap year."%year
    11 except ValueError,v:
    12         print "You must Enter a integre digits."

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

     1 #!/usr/bin/python
     2 try:
     3         dollar=float(raw_input("Enter a money that is liter than 1 dollars:"))
     4         if dollar>=1:
     5                 print "You input is too large."
     6         elif dollar>0 and dollar<1:
     7                 dollarTocents=int(dollar*100)
     8                 (numTo25,dollarTocents)=divmod(dollarTocents,25)
     9                 print "%d 25 coins."%numTo25
    10                 (numTo10,dollarTocents)=divmod(dollarTocents,10)
    11                 print "%d 10 coins."%numTo10
    12                 (numTo5,dollarTocents)=divmod(dollarTocents,5)
    13                 print "%d 5 coins."%numTo5
    14                 numTo1=dollarTocents/1
    15                 print "%d 1 coins."%numTo1
    16         else:
    17                 print "You input must large than 0."
    18 except ValueError,v:
    19         print "You must enter a digits."

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

    1 #!/usr/bin/python)
     2 
     3 print "Enter a expression and I will tell you the answer."
     4 exp=raw_input('>')
     5 if len(exp.split('-'))==2 and len(exp.split('+'))==2:
     6         try:
     7                 elist=exp.split('-')
     8                 a=float(elist[0])
     9                 b=float(elist[1])
    10                 print a-b
    11         except ValueError,v:
    12                 try:
    13                         elist=exp.split('+')
    14                         a=float(elist[0])
    15                         b=float(elist[1])
    16                         print a+b
    17                 except ValueError,v:
    18                         print "Input invalid 1"
    19 elif len(exp.split('-'))==2 and len(exp.split('+'))<>2:
    20         elist=exp.split('-')
    21         try:
    22                 a=float(elist[0])
    23                 b=float(elist[1])
    24                 print a-b
    25         except ValueError,v:
    26                 print "Input invalid 2"
    27 elif len(exp.split('-'))==3:
    28         elist=exp.split('-')
    29         try:
    30                 a=float(elist[1])
    31                 b=float(elist[2])
    32                 print -a-b
    33         except ValueError,v:
    34                 print "Input invalid 3"
    35 elif len(exp.split('+'))==2 and len(exp.split('-'))<>2:
    36         elist=exp.split('+')
    37         try:
    38                 a=float(elist[0])
    39                 b=float(elist[1])
    40                 print a+b
    41         except ValueError,v:
    42                 print "Input invalid 4"
    43 
    44 elif len(exp.split('+'))==3:
    45         elist=exp.split('+')
    46         try:
    47                 a=float(elist[1])
    48                 b=float(elist[2])
    49                 print a+b
    50         except ValueError,v:
    51                 print "Input invalid 5"
    52 elif len(exp.split('*'))==2:
    53         elist=exp.split('*')
    54         try:
    55                 a=float(elist[0])
    56                 b=float(elist[1])
    57                 print a*b
    58         except ValueError,v:
    59                 print "Input invalid 6"
    60 elif len(exp.split('/'))==2:
    61         elist=exp.split('/')
    62         try:
    63                 a=float(elist[0])
    64                 b=float(elist[1])
    65                 print a/b
    66         except ValueError,v:
    67                 print "Input invalid 7"
    68 elif len(exp.split('%'))==2:
    69         elist=exp.split('%')
    70         try:
    71                 a=float(elist[0])
    72                 b=float(elist[1])
    73                 print a%b
    74         except ValueError,v:
    75                 print "Input invalid 8"
    76 elif len(exp.split('**'))==2:
    77         elist=exp.split('**')
    78         try:
    79                 a=float(elist[0])
    80                 b=float(elist[1])
    81                 print a**b
    82         except ValueError,v:
    83                 print "Input invalid 9"
    84 else:
    85         print "Input error"

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

     1 #!/usr/bin/python
     2 #encoding=utf8
     3 
     4 """ 计算营业税 """
     5 
     6 index=0.05
     7 print "Enter a price."
     8 try:
     9         p=float(raw_input('>'))
    10         tax=p*index
    11         print ">tax=%.2f"%tax
    12 except ValueError,v:
    13         print "Input Error."

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

     1 #!/usr/bin/python
     2 
     3 
     4 def squre_area(length):
     5         area=length**2
     6         print "Area of squre is %0.2f" %area
     7 
     8 def cube_volume(length):
     9         volume=length**3
    10         print "Volume of cube is %0.2f" %volume
    11 
    12 def circle_area(radius):
    13         area=3.14*radius**2
    14         print "Area of circle is %0.2f" %area
    15 
    16 def sphere_volume(radius):
    17         volume=(4*3.14*radius**3)/3
    18         print "Volume of sphere is %0.2f" %volume
    19 
    20 if __name__=="__main__":
    21         try:
    22                 d=float(raw_input("Enter a num:"))
    23                 squre_area(d)
    24                 cube_volume(d)
    25                 circle_area(d)
    26                 sphere_volume(d)
    27         except ValueError,v:
    28                 print "Input a invalid value."

    5-9.
    数值形式回答下面关于数值格式的问题

    答:略。

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

     1 #!/usr/bin/python
     2 
     3 def convert(f):
     4         c=(f-32)*5/9
     5         print "The Temperature of C is:%.2f"%c
     6 
     7 if __name__=="__main__":
     8         #Enter f temperature
     9         try:
    10                 ft=float(raw_input("Enter a f temperature:"))
    11                 convert(ft)
    12         except ValueError:
    13                 print "Input error."

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

     1 #!/usr/bin/python
     2 
     3 even=[i for i in range(0,21) if i%2==0]
     4 print even
     5 odd=[j for j in range(0,21) if j%2<>0]
     6 print odd
     7 
     8 def div(a,b):
     9         if a%b==0:
    10                 print "TRUE"
    11         else:
    12                 print "FALSE"
    13 
    14 num1=float(raw_input("Enter a num:"))
    15 num2=float(raw_input("Enter an another num:"))
    16 div(num1,num2)

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

    答:

    >>> import sys
    >>> sys.maxint
    9223372036854775807
    >>> sys.float_info.max
    1.7976931348623157e+308
    >>> sys.float_info.min
    2.2250738585072014e-308

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

     1 #!/usr/bin/python
     2 
     3 def Convert(a,b):
     4         min=60*a+b
     5         print "min=%d"%min
     6 
     7 if __name__=="__main__":
     8         hour=raw_input("Enter a time:")
     9         try:
    10                 (h,m)=hour.split(":")
    11                 Convert(int(h),int(m))
    12         except ValueError,v:
    13                 print "Input error."

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

    答:略

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

     1 def common_divisor(a,b):
     2 
     3         for i in range(1,min(a,b)+1):
     4                 if a%i==0 and b%i==0:
     5                         m=i
     6         print "The common divisor is %d"%m
     7 
     8 def common_mutiple(i,j):
     9         #method 1
    10         maxnum=max(i,j)
    11         while True:
    12                 if maxnum%i==0 and maxnum%j==0:
    13                         print "The common multiple is %d"%maxnum
    14                         break
    15                 else:
    16                         maxnum=maxnum+1
    17         #method 2
    18         for k in range(1,min(i,j)+1):
    19                 if i%k==0 and j%k==0:
    20                         n=k
    21         print n
    22         print i*j/n
    23 if __name__=="__main__":
    24         try:
    25                 num1=int(raw_input("Enter a num:"))
    26                 num2=int(raw_input("Enter a num again:"))
    27                 common_divisor(num1,num2)
    28                 common_mutiple(num1,num2)
    29         except ValueError,v:
    30                 print "Value Invalid."

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

     1 #!/usr/bin/python
     2 
     3 def payment(balance=100,monthpayment=16.13):
     4         print "Amount Remainint"
     5         print "Pymt#  Paid    Balance"
     6         print "_____ _______ _________"
     7         print "0      $0.00   $%.2f"%balance
     8         month=0
     9         remain=balance
    10         while remain>=monthpayment:
    11                 month=month+1
    12                 remain=remain-monthpayment
    13                 print "%d    $%.2f    $%.2f"%(month,monthpayment,remain)
    14         else:
    15                 print "%d    $%.2f    $0.00"%(month,remain)
    16 if __name__=="__main__":
    17         try:
    18                 balance=float(raw_input("Enter opening balance:"))
    19                 monthpayment=float(raw_input("Enter monthly payment:"))
    20                 payment(balance,monthpayment)
    21         except ValueError,v:
    22                 print "Input Error."
    23                 payment()

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

     1 #!/usr/bin/python
     2 
     3 import random
     4 
     5 #the len of list
     6 N=random.randint(2,100)
     7 randlist=random.sample(xrange(0,2**31-1),N)
     8 print randlist
     9 randlist.sort()
    10 print randlist
  • 相关阅读:
    [杂谈]关于前端如何学习框架的一点牢骚
    【2018】面试复习大纲
    迟来的2017总结
    [转载并收藏]JavaScript 疲劳终极指南:我们行业的真相
    想做好产品,一定要成为自己产品的用户
    2017年个人提升计划
    Chrome新发现
    不要被所在的公司或企业绑架
    半夜不想睡有感
    2016年总结
  • 原文地址:https://www.cnblogs.com/tmyyss/p/3758134.html
Copyright © 2011-2022 走看看