Python核心编程2第五章课后练习

本人自己做的练习,借鉴过网上资料,准确性不保证,欢迎各位前辈指教:-D。

5-1 整型,讲讲python普通整型与长整型区别

python整形一共有三种:布尔型,长整型和标准整型。普通整型与长整型的区别在于标准整形的取值范围是-2^31到2^31-1,长整型所能表达的数值与机器自身的内存有关。

5-2 定义一个函数,用于两个数相乘,并调用这个函数

 #!/usr/bin/env python

def Multiply(number1,number2):

        return number1*number2
if __name__=="__main__":
        number1 =input("please enter the number1:")
        number2 =input("please enter the number2:")
        print Multiply(number1,number2)

5-3 标准类型运算符. 写一段脚本,输入一个测验成绩,根据下面的标准,输出他的评分

成绩(A-F)。 
A: 90–100 
B: 80–89 
C: 70–79 
D: 60–69 
F: <60

(以下脚本,最好在增加对输入数据的判断!!!!!)

#!/usr/bin/env python
def score(number):
        number=number/10
        if number==9|number==10:
                return ‘A‘
        if number==8:
                return ‘B‘
        if number==7:
                return ‘C‘
        if number==6:
                return ‘D‘
        else:
                return ‘F‘
if __name__=="__main__":
        number=input("please enter the number:")
        print score(number)

5-4   取余。判断给定年份是否是闰年。使用下面的公式: 
一个闰年就是指它可以被 4 整除,但不能被 100 整除, 或者它既可以被400整(我觉得既可以被4整除又可以被100整除又问题,这样1900年什么的都是闰年了)
除。比如 1992,1996 和 2000 年是闰年,但 1967 和 1900 则不是闰年。下一个是闰年的整世
纪是 2400 年。

#!/usr/bin/env python
def isleapyear(year):
        if (year%4==0 and year%100 !=0)or(year%4==0 and year%400==0):
                return "%d is a leap year"%year
        else:
                return "%d is not a leap year"%year
if __name__=="__main__":
        year=input("please enter the year:")
        print isleapyear(year)

5-5 取余。取一个任意小于 1 美元的金额,然后计算可以换成最少多少枚硬币。硬币有 1美分,5 美分,10 美分,25 美分四种。1 美元等于 100 美分。举例来说,0.76 美元换算结果应该是 3 枚 25 美分,1 枚 1 美分。类似 76 枚 1 美分,2 枚 25 美分+2 枚 10 美分+1 枚 5 美分+1枚 1 美分这样的结果都是不符合要求的。

#!/usr/bin/env python
def changecoin(number):
    result=[]
    meifen=[25,10,5]
    for i in meifen:
        result.append(number/i)
        number=number%i
    result.append(number)
    return "25 Cent is %d,10 Cent is %d,5 Cent is %d,1 Cent is %d"%(result[0],result[1],result[2],result[3])
if __name__=="__main__":
        number=input("please enter the number:")
        print changecoin(number)

 

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

#!/usr/bin/env python
def calculator(number1,i,number2):
        if i==‘+‘:
                return number1+number2
        if i==‘-‘:
                return number1-number2
        if i==‘*‘:
                return number1*number2
        if i==‘/‘:
                return number1/number2
        if i==‘%‘:
                return number1%number2
        if i==‘**‘:
                return number1**number2
caozuo=[‘+‘,‘-‘,‘**‘,‘/‘,‘%‘,‘*‘]
string =raw_input("please enter the string:")
for obj in caozuo:
        if string.find(obj)>-1 and string.count(obj)<2:
                number =string.split(obj)
                list =[]
                for i in number:
                        list.append(i)
                number1=int(list[0])
                i=obj
                number2=int(list[1])
print calculator(number1,i,number2)

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

#!/usr/bin/env python
def tax(number):
        return number*0.8
if __name__=="__main__":
        number=input("Please enter the number:")
        print tax(number)

5-8 几何。计算面积和体积。

  (a)正方形和立方体

  (b)圆和球

#!/usr/bin/env python
import math
def Square_and_cube(length):
        print "The area of the square is %d"%pow(length,2)
        print "The volume of a cube is %d"%pow(length,3)
def Circle_and_sphere(length):
        print "The area of the Circle is %d"%pow(length,2)*math.pi
        print "The volume of a sphere is %d"%pow(length,3)*math.pi*4/3

if __name__=="__main__":
        print """
        (1)Calculate square and cube
        (2)Calculate Circle and sphere
        (3)exit()
        """
        length=input("please enter the length:")
        choice=input("please make the choice number:")
        if choice==1:
                Square_and_cube(length)
        if choice==2:
                Circle_and_sphere(length)
        if choice==3:
                exit

5–9.   数值形式 回答下面关于数值格式的问题: 
 (a) 为什么下面的例子里 17+32 等于 49, 而 017+32 等于 47, 017+032 等于 41? 
 

17+32均为十进制数值相加:49

017+32为八进制数加十进制数:15+32=47

017+032均为两个八进制数相加:15+26=41

(b)为什么下面这个表达式我们得到的结果是 134L 而不是 1342 ? 
 

两个长整型数相加,l与数字1相似,提倡长整型用大写L

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

#!/usr/bin/env python
from __future__ import division
def celcius(F):
        C=F-32*(5/9)
        return C
if __name__=="__main__":
        F=input("please enter the Fahrenheit degree:")
        print celcius(F)

5-11 取余。

   (a)使用循环和算术运算,求出0~20之间的所有偶数。

    #!/usr/bin/env python
    for i in range(21):
            if i%2==0:
                    print i

   (b)同上,不过这次输出所有的奇数。

   #!/usr/bin/env python
      for i in range(21):
              if i%2==1:
                      print i

   (c)综合(a)和(b),请问辨别奇数和偶数的最简单的方法是什么?

看是否能够被2整除

   (d)使用(c)的成果,写一个函数,检测一个整型是否被另一个整型整除。先要求用户输入两个数,然后你的函数判断两者是否有整除关系,根据判断结果分别返回True和False。

#!/usr/bin/env python
def div(num1,num2):
        if num1%num2==0:
                return "True"
        else:
                return "False"
if __name__=="__main__":
        num1=input("please type the num1:")
        num2=input("please type the num2:")
        print "%d divided %d is %s"%(num1,num2,div(num1,num2))

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

print sys.maxint

print -sys.maxint-1

print sys.float_info

print sys.long_info

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

#!/usr/bin/env python
def time(h,t):
        h=int(h)
        t=int(t)
        t=h*60+t
        print "The minutes is",t
if __name__=="__main__":
        s=raw_input("please input the time in HH:MM...\n")
        s=s.split(":")
        time(s[0],s[1])

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

#!/usr/bin/env python
day_rate=float(raw_input("please type the day rate:\n"))
year_rate=(1+day_rate)**365-1
print "Annual return is %f"%year_rate

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

#!/usr/bin/env python
def gcd(num1,num2):
        i=1
        while True:
                i+=1
                if (i%num1==0)&(i%num2==0):
                        break
        return "the gcd is %d"%i
def lcm(num1,num2):
        i=max(num1,num2)
        while True:
                i-=1
                if (num1%i==0)&(num2%i==0):
                        break
        return "the lcm is %d"%i
if __name__=="__main__":
        num1=input("please enter the number1:")
        num2=input("please enter the number2:")
        print gcd(num1,num2)
        print lcm(num1,num2)

5-16 家庭财务。给定一个初始金额和月开销数,使用循环,确定剩下的金额和当月的支出数,包括最后的支出数。Payment()函数会用到初始金额和月额度,输出结果应该类似下面的格式(列子中的数字仅用于演示)。

Enter opening balance:100.00

Enter monthly payment: 16.13

Amount Remaining

Pymt# Paid Balance

----- ------ ---------

0 $ 0.00 $100.00

1 $16.13 $ 83.87

2 $16.13 $ 67.74

3 $16.13 $ 51.61

4 $16.13 $ 35.48

5 $16.13 $ 19.35

6 $16.13 $ 3.22

7 $ 3.22 $ 0.00

#!/usr/bin/env python
def pay(paid,balance):
  print "Pymt# Paid Balance"
  print "----- ----- ------"
  i=0
  b=balance
  while(balance>paid):
    balance=balance - paid
    i+=1
    print " %d $%f $%f"%(i,paid,balance)
    i+=1
    print" %d $%f $%f"%(i,balance,0)

if __name__=="__main__":
  balance=raw_input("please enter the balance:")
  paid=raw_input("please enter the paid:")
  balance=float(balance)
  paid=float(paid)
  pay(paid,balance)

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

#!/usr/bin/python
import random
num = random.randint(1,100)
lst=[]
for item in range(num):
        tmp = random.randint(0,(pow(2,31)-1))
        lst.append(tmp)
lst.sort()
print lst

时间: 2024-10-11 00:44:14

Python核心编程2第五章课后练习的相关文章

Python核心编程_第五章课后习题

习题5_2.py #!/usr/bin/python def MyMultiple(x, y):         return x * y      for i in range(1, 10):      for j in range(1, i + 1):          print '%d * %d = %2d' % (j, i, MyMultiple(i, j)),                          if j == i:                     print

《Python核心编程》 第五章 数字 - 课后习题

课后习题  5-1 整形. 讲讲 Python 普通整型和长整型的区别. 答:普通整型是绝大多数现代系统都能识别的. Python的长整型类型能表达的数值仅仅与你机器支持的(虚拟)内存大小有关. 5-2 运算符 (a) 写一个函数,计算并返回两个数的乘积 (b) 写一段代码调用这个函数,并显示它的结果 答: def pro(a,b): p = a*b return p a = int(raw_input("a=")) b = int(raw_input("b="))

《Python核心编程》第五章:数字

本章大纲 介绍Python支持的多种数字类型,包括:整型.长整型.布尔型.双精度浮点型.十进制浮点型和复数.介绍和数字相关的运算符和函数. 知识点 5.1 布尔型 从Python2.3开始支持bool,取值范围:True.False 5.2 标准整型 在32位机器上,标准整数类型的取值范围:-2的31次方 ~ 2的31次方-1 - Python标准整数类型等价于C语言的(有符号)长整型. - 八进制整数以数字 "0" 开头,十六进制整数以 "0x" 或 "

Python核心编程2第四章课后练习

4-1 Python 对象.与所有 Python 对象有关的三个属性是什么?请简单的描述一下. 身份:对象的唯一标识 类型 :对象的类型决定了该对象可以保存什么类型的值 值:对象表示的数据项 4-2 类型.不可更改(immutable)指的是什么?Python 的哪些类型是可更改的(mutable),哪些不是? 不可更改(immutable)指的是不允许对象的值被更改. 可变类型:列表.字典. 不可变类型:数字.字符串.元组. 可从id()判断是否可更改 4-3 类型.哪些 Python 类型是

Python核心编程2第三章课后练习

1. 标识符.为什么Python 中不需要变量名和变量类型声明? Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程.每个变量在内存中创建,都包括变量的标识,名称和数据这些信息.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 2.标识符.为什么Python 中不需要声明函数类型? Python中使用def关键字定义函数,函数包括函数名称和参数,不需要定义返回类型,Python能返回任何类型函数没有定义返回类型,实际上每一个函数都有返回值,默认为None(pytho

Python核心编程2第六章课后练习

6-1 字符串 .string 模块中是否有一种字符串方法或者函数可以帮我鉴定一下一个字符串是否是另一个大字符串的一部分? #!/usr/bin/env python def contain(str1,str2): if str1 in str2: print "str1 contains str2" else: print "str1 not contains str2" if __name__=="__main__": str1=raw_in

《Python核心编程》 第七章 映射和集合类型 - 习题

课后习题 7–1. 字典方法.哪个字典方法可以用来把两个字典合并到一起? 答: dict1 = {'1' :' python' } dict2 = {'2' :"hello" } dict1.update(dict2) dictAll = dict1 print dictAll Result: {'1': ' python', '2': 'hello'} 7–2. 字典的键.我们知道字典的值可以是任意的 Python 对象,那字典的键又如何呢?请试 着将除数字和字符串以外的其他不同类型

【python核心编程】第六章 序列

1.操作符 (1)成员关系操作符:in .not in >>> string ='abcdefg'>>> 'a' in stringTrue>>> 'h' in stringFalse>>> 'h' not in stringTrue *补充知识*:string模块 >>> import string>>> string.uppercase        #大写字母'ABCDEFGHIJKLMNOP

《Python核心编程》第十一章:函数和函数式编程

本章大纲 介绍函数的创建.调用方式,内部函数.函数装饰器.函数参数的定义和传递.函数式编程.变量作用域.闭包. 知识点 11.1 什么是函数? 函数是对程序逻辑进行结构化或过程化的一种编程方法,以实现代码的复用. python 的过程就是函数,因为解释器会隐式地返回默认值 None. python 动态地确定函数返回类型,而不是进行直接的类型关联. 可以使用 type() 函数作为代理,处理有不同参数类型的函数的多重声明,以模拟其他编程语言的函数重载. 11.2 调用函数 11.2.1 关键字参