Python 核心编程 课后习题 第五章
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,
for i in xrange(0,21):
if i % 2 != 0:
print i,
# 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 核心编程 课后习题 第五章的更多相关文章
- Python核心编程课后习题-第六章
1. 字符串, string模块中是否有一种字符串方法或者函数可以帮我鉴定一下一个字符串是否是另一个大字符串的一部分? str1 = 'abcdefghijklmnopqrstuv' print st ...
- python核心编程2 第十五章 练习
15-1.识别下列字符串 :“bat ”.“bit ”.“but ”.“hat ”.“hit” 或 “hut ” import re from random import choice strtupl ...
- Python核心编程第三版第二章学习笔记
第二章 网络编程 1.学习笔记 2.课后习题 答案是按照自己理解和查阅资料来的,不保证正确性.如由错误欢迎指出,谢谢 1. 套接字:A network socket is an endpoint of ...
- Python核心编程 课后练习 第二章
2.4 使用raw_input()函数得到用户输入. (a) 创建一段脚本使用raw_input()函数从用户输入得到一个字符串, 然后显示这个用户杠杠输入的字符串. #coding = utf-8 ...
- python 核心编程课后练习(chapter 2)
2-4 #2-4(a) print "enter a string" inputstring = raw_input() print"the string is: &qu ...
- python核心编程2 第十四章 练习
14-3.执行环境.创建运行其他Python脚本的脚本. if __name__ == '__main__': with open('test.py') as f: exec(f.read()) 14 ...
- python 核心编程课后练习(chapter 6)
6-1 #6-1 #help(string) import string str = "helloworld" substr = "h1e" if string ...
- 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< ...
- python 核心编程课后练习(chapter 3)
3-8 #3-8 "makeTextFile.py -- create text file" import os ls = os.linesep #get filename fna ...
随机推荐
- SQL的四种连接
SQL的四种连接-内连接.左外连接.右外连接.全连接 今天在看一个遗留系统的数据表的时候发现平时查找的视图是FULL OUT JOIN的,导致平时的数据记录要进行一些限制性处理,其实也可以设置视图 ...
- php代码中使用换行及(\n或\r\n和br)的应用
浏览器识别不了\n或\r\n,这两个换行符是文本换行符,文本文件有效;假设须要将结果输出到浏览器或打印到显示器,代码中使用br;假设仅仅是在源码中换行.则使用\n或\r\n,感兴趣的朋友能够了解下,也 ...
- javascript与as3交互
文章都是发布在github再转到这边的,这边格式可能会乱掉.博客地址:benqy.com 写在前面的废话 公司首页的flash广告,都是由第三方制作的,脚本和flash文件都是由各个广告公司独立制作, ...
- Android加入新的视频格式--媒体库扫描
需求:在mediaprovider数据库中加入.mov后缀格式的视频文件 能够使用工具MediaInfo_GUI_0.7.67_Windows.3243836749.exe 查看mov文件编码格式类型 ...
- 使用Vitamio开发iOS平台上的万能播放器
迅速了解 Vitamio是干什么的?看官方怎么说: "Vitamio SDK for iOS是Yixia Ltd官方推出的 iOS 平台上使用的软件开发工具包(SDK),为iOS开发人员提供 ...
- 简述JS中 appy 和 call 的详细用法
Apply 和 Call 两个老生常言的方法,使用过程的一些细节还是有很大的异同,具体使用情况可以参照下面例子详细回顾一下. 区别和详解:js中call()和apply()的用法 1.关于call() ...
- Gmail收不到邮件咋办?
http://www.ipip.net/ping.php 分别输入 imap.gmail.com pop.gmail.com smtp.gmail.com 选择 国外 , 然后点ping,找到对应的 ...
- NHibernate二级缓存(第十一篇)
NHibernate二级缓存(第十一篇) 一.NHibernate二级缓存简介 NHibernate由ISessionFactory创建,可以被所有的ISession共享. 注意NHibernate查 ...
- AR9331出现connect-debounce failed,port 1 disabled解决方法备忘
基于AR9331的路由器,自己画的pcb板子,居然出现这个错误,百度下,貌似有不少人遇见过这个错误,可是在改动板子前我的固件用的是没问题的.USB完美使用 改动过板子后出现这个问题! hub 1-0: ...
- IOS启动页动画(uiview 淡入淡出效果 )2
Appdelegate里面右个这个函数,只要它没结束,你的等待界面就不会消失.以在启动的时候做些动画 - (BOOL)application:(UIApplication *)application ...