python核心编程笔记——Chapter5
好吧,开始第五章习题:
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的更多相关文章
- python核心编程--笔记
python核心编程--笔记 的解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找pyt ...
- python核心编程--笔记(不定时跟新)(转)
的解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找python路径 1.4 –v ...
- python核心编程笔记(转)
解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找python路径 1.4 –v 冗 ...
- Python核心编程笔记(类)
Python并不强求你以面向对象的方式编程(与Java不同) # coding=utf8 class FooClass(object): version = 0.1 def __init__(self ...
- Python核心编程笔记--动态属性
一.动态语言与静态语言 1.1 静态语言特点: a. 在定义变量时需要指定变量的类型,根据指定的类型来确定变量所占的内存空间 b. 需要经过编译才能运行 c. 在代码编译后,运行过程不能对代码进行操作 ...
- Python核心编程笔记 第三章
3.1 语句和语法 3.1.1 注释( # ) 3.1.2 继续( \ ) 一般使用换行分隔,也就是说一行一个语句.一行过长的语句可以使用反斜杠( \ ) 分 ...
- Python核心编程笔记 第二章
2.1 程序输出:print语句 可以使用print语句显示变量的字符串表示,或者仅用变量名查看该变量的原始值. 2.2 程序输出和raw_input()内建函数 ...
- python核心编程笔记——Chapter7
Chapter7.映像和集合类型 最近临到期末,真的被各种复习,各种大作业缠住,想想已经荒废了python的学习1个月了.现在失去了昔日对python的触觉和要写简洁优雅代码的感觉,所以临到期末毅然继 ...
- python核心编程笔记
1.python的对象是通过引用传递的. 2.多元赋值: x, y = y, x
随机推荐
- Objective-C KVC讲解,包你看懂会用
KVC:Key Value Coding,取其三个单词首字母浓缩而成.直白翻译过来就是键值编码,什么意思呢?简单来说,就是操作一个对象,也可以像操作字典一样,通过key来取值和赋值. 我们先创建一个H ...
- javascript 容易忘记方法集锦
定义和用法 1.split() 方法用于把一个字符串分割成字符串数组. 提示: 如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间 ...
- linux创建账户并自动生成主目录和主目录下的文件
# useradd -d /home/test -m test; 然后给test设置密码. # passwd test; 1. useradd 添加用户或更新新创建用户的默认信息 语法:useradd ...
- [转帖] 中国SaaS死或生之二: ERP两大邪术,尽出歪门邪路 ---- 挺好玩的
中国SaaS死或生之二: ERP两大邪术,尽出歪门邪路 http://www.cniteyes.com/archives/33753 文章摘要:在数字化浪潮中,油腻ERP大叔的那些“歪门邪术” ...
- facenet模型训练
做下记录,脚本如下: 对比 python3 src/compare.py ../models/-/ ../faces/pyimgs/dashenlin/ytwRkvSdG1000058.png ../ ...
- ReentrantLock详解 以及与synchronized的区别
ReentrantLock lock = new ReentrantLock(); //参数默认false,不公平锁 ReentrantLock lock = new ReentrantLock(tr ...
- mapreduce方式操作hbase
一.导入数据到hbase 1.配置hbase-site.xml指向hdfs <configuration> <property> <name>hbase.rootd ...
- hihocoder1711 评论框排版[并查集+set]
#include <cstdio> #include <iostream> #include <set> using namespace std; ; struct ...
- 单点登录(五)-----遇到问题-----cas server 源码部署tomcat运行报错BeanCreationException:Error creating bean with name 's
我们在上一篇文章已经解决了把下载好的cas server源码部署到tomcat缺少子项目编辑文件或者jar包导致找不到class报错的问题 单点登录(四)-----遇到问题-----cas serve ...
- APK反编译之二:工具介绍
前面一节我们说过,修改APK最终是通过修改smali来实现的,所以我们接下来介绍的工具就是如何把APK中的smali文件获取出来,当然同时也需要得到AndroidManifest.xml等文件.直接修 ...