2. 操作符.

  (a) 写一个函数, 计算并返回两个数的乘积.

  (b) 写一段代码调用这个函数, 并显示它的结果.

def multi(a,b):
return a * b result = multi(10,2)
print result

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

  A: 90~100

  B: 80~80

  C: 70 ~ 79

  D: 60 ~69

  F: < 60

def scoreCalculate(score):
if score < 60:
rank = 'F'
elif score < 70:
rank = 'D'
elif score < 80:
rank = 'C'
elif score < 90:
rank = 'B'
else:
rank = 'A'
return rank yourScore = int(raw_input("Enter your score -->"))
yourRank = scoreCalculate(yourScore)
print yourRank

4. 取余. 判断给定的年份是否为闰年. 使用下面的公式.

  一个闰年就是指它可以被4整除,但不能被100整除. 或者它既可以被4整除又可以被100整除.

 def leapYear(year):
if (year % 4 == 0 and year % 100 != 0) or (year % 100 == 0 and year % 400 == 0):
return True
else:
return False aYear = int(raw_input("Ener a year -->"))
isLeap = leapYear(aYear)
print isLeap
if isLeap:
print '%d is a leap year.' % aYear
else:
print '%d is not a leap year.' %aYear

5 取余, 取任意小于1美元的金额, 然后计算可以换成最少多少枚硬币. 硬币有1美分, 5美分, 10美分, 25美分四种.

 def coinNum(totalMoney):
totalCoin = 0
denomination = [25,10,5,1]
for currency in denomination:
coin,left = divmod(totalMoney,currency)
totalCoin += coin
totalMoney = left
return totalCoin yourMoney = float(raw_input('Enter your money -->')) * 100
coinNumbers = coinNum(yourMoney)
print "You got %d coins" %int(coinNumbers)

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

 def calculator(str1):
lt = str1.strip().split(' ')
if (lt[0].count('.') == 1 or lt[2].count('.')==1):
lt[0], lt[2] = float(lt[0]),float(lt[2])
else:
lt[0], lt[2] = int(lt[0]),int(lt[2])
if lt[1] == '+':
return lt[0] + lt[2]
elif lt[1] == '-':
return lt[0] - lt[2]
elif lt[1] == '*':
return lt[0] * lt[2]
elif lt[1] == '/':
if lt[2] == 0:
print "divide by zero error." else:
return lt[0] / lt[2]
elif lt[1] == '%':
if lt[2] == 0:
print "Divide by zero error"
else:
return lt[0] % lt[2]
elif lt[1] == '**':
return lt[0] ** lt[2]
else:
print "not such calculation method"
str1 = raw_input("Enter two numbers and a operator(eg: 1.0 + 2.0 ) -->")
cal = calculator(str1)
print cal

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

 tax = {'trans':0.03,'assets':0.05}
trade_mode = raw_input("Enter your trade-mode(trans: transport, assets: real eatate) -->")
sales = float(raw_input("Enter your sales -->")) tax = tax[trade_mode] * sales
print 'You must pay %.1f taxes' % tax

8. 几何, 计算面积和体积

(a) 正方形和立方体

(b) 圆和球.

 from math import pi
def calArea(shape, length):
if shape == 'rectangle':
return length **2
elif shape == 'circle':
return pi * (length **2)
else:
print "WTF" def calVolume(shape,length):
if shape == 'rectangle':
return length ** 3
elif shape == 'circle':
return 4.0 / 3 * pi * (length ** 3)
else:
print 'WTF' aShape = raw_input("which shape do you wanna to calculate? -->")
aLength = float(raw_input("enter the length -->"))
area = calArea(aShape,aLength)
volume = calVolume(aShape,aLength)
print "%s has a area of %.2f, volume of %.2f" %(aShape,area,volume)

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

(a) 为什么下面的例子里 17 + 32 等于 49, 而017 + 32 等于47, 017 +032 等于41?  

 >>>17 + 32
49
>>>017 + 32
47
>>>017 + 032
41 # 第一个里面 数字17 和 32 都是十进制整形数字, 所以相加自然是49. 第二个例子中017表示的是八进制数字,
换算成十进制就是15 + 32 自然是17, 同理 017 和032 两个八进制数字相加为41.

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

  

 >>>65l + 78l
134L #上面例子中, 错误的将1写成了小写的L, 即表示两个长整形数字 65 和 78的和自然是134L.
所以在表示长整形是强烈建议是用L. 而不是小写l 以区分'l' 数字1

10. 转换, 写一对函数来进行华氏度到摄氏度的转换. 转化公式为 C = (F-32) * (5 / 9)应该在这个联系中使用真正的除法

 def c2f(celsius):
return (9.0 / 5) * celsius + 32 def f2c(fahrenheit):
return (fahrenheit - 32) * (5.0 / 9) celsius = float(raw_input("Enter a celsius you wanna to trans to F -->"))
fah = c2f(celsius)
print fah
fahrenheit = float(raw_input("Enter a fahrenheit you wanna to trans to C -->"))
cel = f2c(fahrenheit)
print cel

11. 取余.

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

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

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

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

# _*_ coding:utf-8_*_
# answer for (a) & (b) for i in xrange(1,21):
if i % 2 == 0:
print i,
print
for i in xrange(0,21):
if i % 2 != 0:
print i,
print
# answer for (c): 从(a) 和 (b) 来看, 辨别奇数和偶数醉简单的方法"貌似" 是用该数对2 求余, 若等于0则是偶数, 若不为0则是奇数.
#不过在xrange中直接定义步长就可以求出奇数和偶数. def divisionJudge(num1,num2):
if num1 % num2 == 0:
return True
else:
return False num1 = int(raw_input('Enter the num1 -->'))
num2 = int(raw_input('Enter the num2 -->'))
divisonresult = divisionJudge(num1,num2)
if divisonresult:
print u"%d 能整除 %d" %(num1, num2)
else:
print u"%d 不能整除%d" %(num1,num2)

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

 # _*_ coding:utf-8_*_
import sys #int
sys.maxint #float
sys.float_info #long
sys.long_info

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

 def timetrans(time):
hour,mins = time.split(':')
return int(hour) * 60 + int(mins) aTime = raw_input('Enter your time(format: HH:MM) -->')
minutes = timetrans(aTime)
print minutes

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

 def rate(yearRate):
return (1 + yearRate/360) ** 360
nowRate = float(raw_input("Enter the bank rate -->"))
yearRate = rate(nowRate)
print yearRate #银行利息计算公式不知道对不对..

15. 最大公约数和最小公倍数, 请计算两个整型的最大公约数和最小公倍数.

  最大公约数计算: 有两整数 a 和 b, a % b =c

  ① 若c = 0 则b 为最大公约数.

  ②若c != 0 则a=b,b=c在执行求余.

  最小公倍数为两数的乘积/最大公约数

 def get_GCD(a,b):
while True:
c = divmod(a,b)[1]
if c == 0:
return b
else:
a,b = b,c def get_LCM(a,b):
return (a * b) // get_GCD(a,b) num1 = int(raw_input('Enter the num1 -->'))
num2 = int(raw_input('Enter the num2 -->'))
gcd = get_GCD(num1,num2)
lcm = get_LCM(num1,num2)
print gcd,lcm

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

 def payment(balence,paid):
#print the title.
print "Pymt#",' '*2,'Paid',' '*4,"Balance"
print '-----',' '*2,'------',' '*2,'---------'
times,left = divmod(int(balence), int(paid))
if left == 0:
times += 1
else:
times += 2
for i in xrange(1,times):
if balence > paid:
balence -= paid
paid_i = '$' + str(paid)
balence_i = '$' + str(balence)
print "%5d%8s%10s" %(i,paid_i,balence_i)
else:
paid = balence
paid_i = '$' + str(balence)
balence_i = '$' + str(balence-paid)
print "%5d%8s%10s" %(i,paid_i,balence_i) payment(100.00,16.13)

17. *随机数. 生成一个又N个元素的由随机数n组成的列表, 其中N和n的取值范围分别为(1 < N <=100) 和 (0 <=n <=2**31-1), 然后再随机从这个列表中取N(1 <=N <=100)个随机数出来, 对他们排序,然后显示这个子集.

 import random
lt = []
numbers = random.randint(1,100)
for i in xrange(numbers):
numrange = random.randint(1,2**31-1)
lt.append(numrange) lt2 = []
numberstoget = random.randint(1,len(lt))
for i in xrange(1,numberstoget):
lt2.append(lt[i])
lt2.sort()
print lt2

Python 核心编程 课后习题 第五章的更多相关文章

  1. Python核心编程课后习题-第六章

    1. 字符串, string模块中是否有一种字符串方法或者函数可以帮我鉴定一下一个字符串是否是另一个大字符串的一部分? str1 = 'abcdefghijklmnopqrstuv' print st ...

  2. python核心编程2 第十五章 练习

    15-1.识别下列字符串 :“bat ”.“bit ”.“but ”.“hat ”.“hit” 或 “hut ” import re from random import choice strtupl ...

  3. Python核心编程第三版第二章学习笔记

    第二章 网络编程 1.学习笔记 2.课后习题 答案是按照自己理解和查阅资料来的,不保证正确性.如由错误欢迎指出,谢谢 1. 套接字:A network socket is an endpoint of ...

  4. Python核心编程 课后练习 第二章

    2.4 使用raw_input()函数得到用户输入. (a) 创建一段脚本使用raw_input()函数从用户输入得到一个字符串, 然后显示这个用户杠杠输入的字符串. #coding = utf-8 ...

  5. python 核心编程课后练习(chapter 2)

    2-4 #2-4(a) print "enter a string" inputstring = raw_input() print"the string is: &qu ...

  6. python核心编程2 第十四章 练习

    14-3.执行环境.创建运行其他Python脚本的脚本. if __name__ == '__main__': with open('test.py') as f: exec(f.read()) 14 ...

  7. python 核心编程课后练习(chapter 6)

    6-1 #6-1 #help(string) import string str = "helloworld" substr = "h1e" if string ...

  8. python 核心编程课后练习(chapter 5)

    5-2 #5-2 def mul(x, y): return x * y print mul(4,5) 5-3 #5-3 def value_score(num): if 90<=num< ...

  9. python 核心编程课后练习(chapter 3)

    3-8 #3-8 "makeTextFile.py -- create text file" import os ls = os.linesep #get filename fna ...

随机推荐

  1. Android下Fragment使用(全集)

    1 http://blog.csdn.net/niu_gao/article/details/7163263  思路清晰,讲解详细,代码偏少,推荐高手阅读 2 http://blog.csdn.net ...

  2. CLR 完全介绍

    From: http://msdn.microsoft.com/zh-cn/magazine/cc164193.aspx http://msdn.microsoft.com/en-us/magazin ...

  3. thread.join() 方法存在的必要性是什么?

    好久远的问题,为什么关注这个问题的人这么少? 或许是用到这个功能的情形比较少吧. 1.等待处理结果 为什么要用join()方法在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算 ...

  4. 企业级Nginx服务基础到架构优化详解

    1.隐藏nginx header版本号 2.更改源码隐藏软件名称 3.更改nginx默认用户及用户组 4.配置nginx worker进程个数 5.根据CPU核数进行nginx进程优化 6.nginx ...

  5. WAF绕过方法

    1.大小写绕过 这个大家都很熟悉,对于一些太垃圾的WAF效果显著,比如拦截了union,那就使用Union UnIoN等等绕过. 2.简单编码绕过 比如WAF检测关键字,那么我们让他检测不到就可以了. ...

  6. Python鸡汤

    标准库 很正确 外部库 有一些风险,可能有bug,可能文档不全,可能长时间未更新. ipython 1 pip 这应该是安装Python后第一个需要的命令 pip install -i -i, --i ...

  7. 单向HASH——MurmurHash

    //seed 是大质数unsigned long long MurmurHash64B ( const void * key, int len, unsigned int seed ) { const ...

  8. 【BZOJ4070】[Apio2015]雅加达的摩天楼 set+最短路

    [BZOJ4070][Apio2015]雅加达的摩天楼 Description 印尼首都雅加达市有 N 座摩天楼,它们排列成一条直线,我们从左到右依次将它们编号为 0 到 N−1.除了这 N 座摩天楼 ...

  9. web.xml配置中的log4jRefreshInterval

    采用spring框架的项目如何使用log4j在spring中使用log4j,有些方便的地方, 1.动态的改变记录级别和策略,即修改log4j.properties,不需要重启web应用,这需要在web ...

  10. nginx学习之压缩解压篇(七)

    1.简介 压缩响应可以减少传输数据的大小,节省带宽.但过多的压缩会造成很大的处理开销.在发送给客户端之前,nginx会对响应做压缩,但是如果后端服务器已经 压缩过了,nginx就不再压缩. 2.开启压 ...