zoukankan      html  css  js  c++  java
  • 《Python核心编程》第二版第五章答案

    本人python新手,答案自己做的,如果有问题,欢迎大家评论和讨论!

    更新会在本随笔中直接更新。

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

      Python的标准整形类型是最通用的数字类型。在大多数32位机器上,标准整形类型的取值范围是-2**32~2**32 - 1。

      Python的长整型类型能表达的数值仅仅与你的机器支持的(虚拟)内存大小有关,换句话说,Python能轻松表达很大的整数。

      长整型类型是标准整形类型的超集,当程序需要使用比标准整形更大的整型时,可以使用长整型类型,在整型值后面添加L,表示这个为长整型,这两种整形类型正在逐渐统一为一种。

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

    1 def x(a, b):
    2 ...     c = a * b
    3 ...     return c
    4 ... 
    5 
    6 x(2, 3)

    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 grade(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 0 <= num <= 59:
    13              print 'F'
    14      else:
    15              print " The num is invalid."
    16 
    17 try:
    18         num = int(raw_input("Input a num:"))
    19         grade(num)
    20 except ValueError, e:
    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("Please input 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, e:
    12         print "You must input a 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 
     3 try:
     4         dollar = float(raw_input("Input the money that less than 1 dollar:"))
     5         if dollar >= 1:
     6                 print "money is too large."
     7         elif 0 < dollar < 1:
     8                 temp = int(dollar * 100)
     9                 (N25, temp) = divmod(temp, 25)
    10                 print "%d 25 coins." %N25
    11                 (N10, temp) = divmod(temp, 10)
    12                 print "%d 10 coins." %N10
    13                 (N5, temp) = divmod(temp, 5)
    14                 print "%d 5 coins." %N5
    15                 (N1, temp) = divmod(temp, 1)
    16                 print "%d 1 coins." %N1
    17         else:
    18                 print "You must input larger than 0."
    19 except ValueError, e:
    20         print "You must input a digits."

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

     1 #!/usr/bin/python
     2 
     3 print "Enter the expression"
     4 expression = raw_input('>')
     5 
     6 if len(expression.split('+')) == 2:
     7         try:
     8                 splitExpression = expression.split('+')
     9                 m = float(splitExpression[0])
    10                 n = float(splitExpression[1])
    11                 print m + n
    12         except ValueError, e:
    13                 print "Input ValueError !"
    14 elif len(expression.split('-')) == 2:
    15         try:
    16                 splitExpression = expression.split('+')
    17                 m = float(splitExpression[0])
    18                 n = float(splitExpression[1])
    19                 print m - n
    20         except ValueError, e:
    21                 print "Input ValueError !"
    22 elif len(expression.split('*')) == 2:
    23         try:
    24                 splitExpression = expression.split('*')
    25                 m = float(splitExpression[0])
    26                 n = float(splitExpression[1])
    27                 print m * n
    28         except ValueError, e:
    29                 print "Input ValueError !"
    30 elif len(expression.split('/')) == 2:
    31         try:
    32                 splitExpression = expression.split('/')
    33                 m = float(splitExpression[0])
    34                 n = float(splitExpression[1])
    35                 print m / n
    36         except ValueError, e:
    37                 print "Input ValueError !"
    38 elif len(expression.split('%')) == 2:
    39         try:
    40                 splitExpression = expression.split('%')
    41                 m = float(splitExpression[0])
    42                 n = float(splitExpression[1])
    43                 print m % n
    44         except ValueError, e:
    45                 print "Input ValueError !"
    46 elif len(expression.split('**')) == 2:
    47         try:
    48                 splitExpression = expression.split('**')
    49                 m = float(splitExpression[0])
    50                 n = float(splitExpression[1])
    51                 print m ** n
    52         except ValueError, e:
    53                 print "Input ValueError !"
    54 else:
    55         print "Input Error !"

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

     1 #!/usr/bin/python
     2 
     3 from math import pi
     4 
     5 def square(length):
     6     area = length ** 2
     7     print "The area of square is %0.2f" %area
     8 
     9 def cube(length):
    10     volume = length ** 3
    11     print "The volume of cube is %0.2f" %volume
    12 
    13 def circle(radius):
    14     area = pi * radius ** 2
    15     print "The area of circle is %0.2f" %area
    16 
    17 def sphere(radius):
    18     volume = 4 * pi * radius ** 2
    19     print "The volume of sphere is %0.2f" %volume
    20 
    21 if __name__ == "__main__":
    22     try:
    23         print "*****Direct execute*****"
    24         num = float(raw_input("Enter a num:"))
    25         square(num)
    26         cube(num)
    27         circle(num)
    28         sphere(num)
    29     except ValueError, e:
    30         print " Input a invaild num !"
    31 
    32 if __name__ == "test":
    33     try:
    34         print "*****Module called*****"
    35         num = float(raw_input("Enter a num:"))
    36         square(num)
    37         cube(num)
    38         circle(num)
    39         sphere(num)
    40     except ValueError, e:
    41         print " Input a invaild num !"

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

     1 #!/usr/bin/python
     2 
     3 def convert(x):
     4     c = (x - 32) * (5.0 / 9)
     5     print "The temperature of C is %0.2f" %c
     6 
     7 if __name__ == "__main__":
     8     try:
     9         m = float(raw_input("Enter the temperature of F:"))
    10         convert(m)
    11     except ValueError, e:
    12         print "Input Error !"

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

     1 #!/usr/bin/python
     2 
     3 def even():
     4     for i in range(0,21):
     5         if i % 2 == 0:
     6             print i,
     7 
     8 def odd():
     9     for i in range(0,21):
    10         if i % 2 <> 0:
    11             print i,
    12 
    13 def div(m, n):
    14     if m % n == 0:
    15         print "TRUE"
    16     else:
    17         print "FALSE"
    18     
    19 if __name__ == "__main__":
    20     print "Print the even:"
    21     even()
    22     print 
    23     print "Print the odd:"
    24     odd()
    25     print
    26     m = float(raw_input("Enter a num:"))
    27     n = float(raw_input("Enter an anoher num:"))
    28     div(m, n)

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

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

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

     1 #!/usr/bin/python
     2 
     3 def common_divisor(a, b):
     4     for i in range(1, min(a, b) + 1):
     5         if a % i == 0 and b % i ==0:
     6             m = i
     7     print "The common divisor is %d" %m
     8 
     9 def common_mutiple(i, j):
    10     maxnum = max(i, j)
    11     while True:
    12         if maxnum % i == 0 and maxnum % j ==0:
    13             print "The common mutiple is %d" %maxnum
    14             break
    15         else:
    16             maxnum = maxnum + 1
    17 
    18 if __name__ == '__main__':
    19     try:
    20         num1 = int(raw_input("Enter num1:"))
    21         num2 = int(raw_input("Enter num2:"))
    22         common_divisor(num1, num2)
    23         common_mutiple(num1, num2)
    24     except ValueError, e:
    25         print "Input a invalid num !"

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

    #!/usr/bin/python
    
    import random
    
    N = random.randint(2, 100)
    randlist = random.sample(xrange(0, 2**31 - 1), N)
    randlist.sort()
    print randlist
  • 相关阅读:
    JavaScript DOM 编程艺术 公用方法
    JavaScript DOM 编程艺术
    Echart 的formatter及重写line chart
    PHP 导出csv
    Linux 搭建PHP环境
    学习新思路
    fork产生子进程利用pipe管道通信
    进程间通信 管道
    进程间通信(IPC) 简介
    java 多态
  • 原文地址:https://www.cnblogs.com/Skyar/p/3880942.html
Copyright © 2011-2022 走看看