好吧,开始第五章习题:

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. Swift-懒加载使用

    //    懒加载 lazy var tableView : UITableView = {         let tempTableView = UITableView()         ret ...

  2. C++派生类构造函数调用顺序(详解)

    我们来看下面一段代码: class B1 { public: B1(int i) {cout<<"constructing B1 "<<i<<e ...

  3. 安装mysql后遇到的一些问题

    我们安装好了mysql(cnetos7上是安装mariadb)后,出现如下图所示的问题,我们可以用netstat -lntup查看以下服务器的端口,mysql的端口一般默认为 3306,查看服务是否启 ...

  4. angular入门学习文档之一

    一.数据双向绑定 angular(下面统一简称ng)强大的地方莫过于它内置的数据双向绑定功能,下面我们通过一个简单的例子来演示ng强大的双向绑定数据的能力. 代码如下: 1.dom结构: 1.< ...

  5. windows多线程(九) PV原语分析同步问题

    一.PV原语介绍 PV原语通过操作信号量来处理进程间的同步与互斥的问题.其核心就是一段不可分割不可中断的程序. 信号量的概念1965年由著名的荷兰计算机科学家Dijkstra提出,其基本思路是用一种新 ...

  6. 1使用 vue-cli 搭建项目(cp)

    http://www.cnblogs.com/wisewrong/p/6255817.html(copy:web) https://zhuanlan.zhihu.com/p/26183652(也很好) ...

  7. 基于JVM原理、JMM模型和CPU缓存模型深入理解Java并发编程

    许多以Java多线程开发为主题的技术书籍,都会把对Java虚拟机和Java内存模型的讲解,作为讲授Java并发编程开发的主要内容,有的还深入到计算机系统的内存.CPU.缓存等予以说明.实际上,在实际的 ...

  8. 更新ffmpeg

    今天对公司线上的几台机器做了下ffmpeg的更新,没有什么技术含量,还是简单记录下,做个流水账~哈哈 软件包获取方式 官方网站:https://ffmpeg.org/download.htmlgith ...

  9. AND Graph CodeForces - 987F(思维二进制dfs)

    题意:给出n(0≤n≤22)和m,和m个数ai,1 ≤ m ≤ 2n ,0≤ai<2n ,把ai & aj == 0 的连边,求最后有几个连通块 解析:一个一个去找肯定爆,那么就要转换一 ...

  10. 学习Spring Boot:(五)使用 devtools热部署

    前言 spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去.原理是在发现代码有更改之后,重新启动应用,但是比速度比手动停止后 ...