好吧,开始第五章习题:

5-2.又是老调重谈,raw_input这个函数真是非常麻烦,返回是str类型,没办法,只能在函数里面使用int内建。(就只是一道简单的两数相乘,哭了)

 #!/usr/bin/env python
#-*-coding=utf-8-*- def mul(a,b):
return int(a)*int(b) if __name__ == '__main__':
a = raw_input("输入a:")
b = raw_input("输入b:")
print mul(a,b)

5-3.谭浩强的书见过无数遍的题目,输入分数看A-F,没什么好说的,但是想练一下用字典这个数据结构,写来看看

 #!/usr/bin/env python
#-*-coding=utf-8-*- def grade(a):
aDist = {0:'F',1:'F',2:'F',3:'F',4:'F',5:'F',\
6:'D',7:'C',8:'B',9:'A',10:'A'}
return aDist[int(a) / 10] if __name__ == '__main__':
g = raw_input("请输入测验成绩:")
print grade(g)

5-4 判断是否闰年,无难度

 #!/usr/bin/env python
#-*-coding=utf-8-*- def Leapyear(a):
year = int(a)
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
return True
else:
return False if __name__ == '__main__':
yy = raw_input("请输入年份:")
if Leapyear(yy) == True:
print '闰年'
else:
print '平年'

5-5.硬币找零,初期的贪心算法(继续用字典)

 #!/usr/bin/env python
#-*-coding=utf-8-*- def change(a):
aDist = {25:0,10:0,5:0,1:0}
b = int(float(a) * 100)
for key in aDist:
aDist[key] = b / key
b %= key
sum = 0
for key in aDist:
sum += aDist[key]
return sum if __name__ == '__main__':
f = raw_input("请输入金额:")
print change(f)

5-6.算术问题:主要麻烦在字符串的处理上面,我初次尝试一下使用正则来解决,但是过程颇恶心。

 #!/usr/bin/env python
#-*-coding=utf-8-*- import re def calculator(Str):
pat1 = r'[0-9.]+' #匹配数字
pat2 = r'[\+\-\*/%]+' #匹配算术符号
aList1 = re.findall(pat1,Str)
aList2 = re.findall(pat2,Str)
if aList2[0] == '+':
return float(aList1[0]) + float(aList1[1])
if aList2[0] == '-':
return float(aList1[0]) - float(aList1[1])
if aList2[0] == '*':
return float(aList1[0]) * float(aList1[1])
if aList2[0] == '/':
return float(aList1[0]) / float(aList1[1])
if aList2[0] == '%':
return float(aList1[0]) % float(aList1[1])
if aList2[0] == '**':
return float(aList1[0]) ** float(aList1[1]) if __name__ == '__main__':
ss = raw_input("请输入算式:")
print calculator(ss)

5-8.几何问题,本来不想做的,试一下用常量Pi

 #!/usr/bin/env python
#-*-coding=utf-8-*- from math import pi def square(a):
return float(a) ** 2 def cube(a):
return float(a) ** 3 def circle(r):
return pi * float(r) ** 2 def spherome(r):
return 4.0 / 3 * pi * float(r) ** 3 if __name__ == '__main__':
a1 = raw_input("请输入正方形的边长:")
print '正方形面积为:',square(a1)
a2 = raw_input("请输入立方体的边长:")
print '立方体的体积为:',cube(a2)
r1 = raw_input("请输入圆的半径:")
print '圆的面积为:',circle(r1)
r2 = raw_input("请输入球体的半径:")
print '球体的体积为:',spherome(r2)

5-10.转换。老题目,摄氏温度转化为华氏温度,题目说什么要用到现实生活的除法(其实python2.2之后的版本'/'已经是真正的除法了),只好做一下呗

 #!/usr/bin/env python
#-*-coding=utf-8-*- from __future__ import division def change(F):
C = (float(F) -32) * 5.0 / 9
return C if __name__ == '__main__':
f = raw_input("摄氏温度为:")
print '华氏温度为:%.2f' % change(f)

5-12.系统限制。写一段脚本确认一下你的Python所能处理的整型,长整型,浮点型和复数的范围。这道题真的没思路。后来百度看用到sys模块

 >>>import sys; #加载sys模块

 >>>print (sys.maxint);
>>>print(-sys.maxint-1); >>>print(sys.float_info);
>>>print(sys.long_info);
#最后我这个运行起来有问题不知道为什么,有人说是版本问题

5-16.繁琐的题目,这是我写的。

 #!/usr/bin/env python
#-*-coding=utf-*- def Payment(balance,monthly):
count = 1
print ' Amount Remaining'
print 'Pymt# Paid Balance'
print '----- ------ -----------'
b = float(balance)
m = float(monthly)
print ' 0 $ 0.00 $%.2f' % b
while b >= 0:
if b < m:
print '%2d $%4.2f $0.00' % (count,b)
break
else:
b -= m
print '%2d $%4.2f $%4.2f' % (count,m,b)
count += 1 if __name__ == '__main__':
ob = raw_input('Enter opening balance:')
mp = raw_input('Enter monthly payment:')
Payment(ob,mp)

后来我在网上看到了一种代码行数更简单的方法,跪了。

 #!/usr/bin/env python
#-*-coding=utf-*- def Payment(balance,monthly):
count = 1
print ' Amount Remaining'
print 'Pymt# Paid Balance'
print '----- ------ -----------'
b = float(balance)
m = float(monthly)
print '%4d%15.2f%15.2f' % (0, 0.00, 100)
while (b - count * m ) >= 0:
count = count + 1
print '%4d%15.2f%15.2f' % (count - 1, m, (b - m*(count - 1)))
print '%4d%15.2f%15.2f' % (count, (b - m*(count - 1)), 0) if __name__ == '__main__':
ob = raw_input('Enter opening balance:')
mp = raw_input('Enter monthly payment:')
Payment(ob,mp)

5-17.随机数。懂得用ramdom模块以及randint函数

 #!/usr/bin/env python
#-*-coding=utf-8-*- import random N = random.randint(1, 101) list = range(N) #注意这种新建列表的方式 for i in range(N):
list[i] = random.randint(-1, 2**31) print 'N =',N
print '生成的列表:',list
list.sort()
print '排序过后:',list

多谢!

python核心编程笔记——Chapter5的更多相关文章

  1. python核心编程--笔记

    python核心编程--笔记 的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找pyt ...

  2. python核心编程--笔记(不定时跟新)(转)

    的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找python路径 1.4 –v   ...

  3. python核心编程笔记(转)

    解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找python路径 1.4 –v   冗 ...

  4. Python核心编程笔记(类)

    Python并不强求你以面向对象的方式编程(与Java不同) # coding=utf8 class FooClass(object): version = 0.1 def __init__(self ...

  5. Python核心编程笔记--动态属性

    一.动态语言与静态语言 1.1 静态语言特点: a. 在定义变量时需要指定变量的类型,根据指定的类型来确定变量所占的内存空间 b. 需要经过编译才能运行 c. 在代码编译后,运行过程不能对代码进行操作 ...

  6. Python核心编程笔记 第三章

    3.1     语句和语法    3.1.1   注释( # )   3.1.2   继续( \ )         一般使用换行分隔,也就是说一行一个语句.一行过长的语句可以使用反斜杠( \ ) 分 ...

  7. Python核心编程笔记 第二章

    2.1   程序输出:print语句         可以使用print语句显示变量的字符串表示,或者仅用变量名查看该变量的原始值. 2.2   程序输出和raw_input()内建函数       ...

  8. python核心编程笔记——Chapter7

    Chapter7.映像和集合类型 最近临到期末,真的被各种复习,各种大作业缠住,想想已经荒废了python的学习1个月了.现在失去了昔日对python的触觉和要写简洁优雅代码的感觉,所以临到期末毅然继 ...

  9. python核心编程笔记

    1.python的对象是通过引用传递的. 2.多元赋值: x, y = y, x

随机推荐

  1. 关于jsonp知识的理解

    jsonp 之前知道是用来解决ajax跨域的问题,但是其本质的原理,还是不清楚. 所以看了一下. js的script 的src里面的连接是可以跨域的,所以可以通过她来实现跨域资源获取. 但是也需要后端 ...

  2. JMeter性能测试基础 (2) - 变量的使用

    在使用JMeter进行性能测试时,一般情况下要保证样本容量尽可能大,这样才能得到一个比较合理的结果.也就是说,我们不能只对同一个URL进行多次访问,而是要对统一模块下尽可能多的URL进行访问,以取得相 ...

  3. js对象进行浅复制,深拷贝的方法

    js对象浅拷贝和深拷贝详解   本文为大家分享了JavaScript对象的浅拷贝和深拷贝代码,供大家参考,具体内容如下 1.浅拷贝 拷贝就是把父对像的属性,全部拷贝给子对象. 下面这个函数,就是在做拷 ...

  4. windows结束端口对应的进程

    netstat -ano |findstr " //window查看端口占用 taskkill /pid 54828taskkill /F /pid 54828 //强制中止 转载请注明博客 ...

  5. JAVA里的布尔运算符-甲骨文面试题

    重要一点: (& ,|) ==>二进制布尔运算符,(&&,||)==>条件布尔运算符 二进制布尔运算符,两边都会执行,不管左边是否为真或假==>对于运算符两边 ...

  6. VLD 无法打印堆栈调用情况

    调试时遇到了一个比较郁闷的问题:同样一个MFC工程,复制之后无任何附加操作,VLD便无法正常打印内存泄漏处的堆栈调用了 百度了一下,重要找到了答案:“VLD不支持中文” 复制工程时windows自动在 ...

  7. 2018 南京icpc现场赛总结

    Day 0 提前5个小时从学校出发,在登机口坐下时,飞机还有1个多小时起飞. 航班准时起飞,到了南京以后直接坐地铁到学校附近(南京地铁票也太精致了吧). 因为天已经黑了,就只在学校附近转了一圈就回酒店 ...

  8. 使用SQLyog连接MySQL数据库

    [学习笔记]使用SQLyog连接MySQL数据库 一.使用SQLyog创建数据库用来管理学生信息 复制代码 1 #创建数据库student  2 DROP DATABASE IF EXISTS Mys ...

  9. JAVA相关概念(一)

    依赖注入和控制反转 首先,这两个词是同一个概念的不同角度的说法,依赖注入感觉是对描述了如何实现,而控制反转则像是描述了一种思想. 依赖注入的流行可以说是由spring的流行带动的,只要是做过sprin ...

  10. vyos 基础配置

    vyos 基础配置 http://www.lowefamily.com.au/2015/11/29/using-a-vyos-router-with-hyper-v/1/http://thomasvo ...