《Python核心编程》部分代码习题实践(持续更新)
第三章
3-10 交换异常处理方式
代码:
#makeTextFile.py #!/usr/bin/env python 'makeTextFile.py'
import os
ls = os.linesep #get File name while True:
fname = raw_input("Enter file name: ")
try:
fobj = open(fname,'w')
except IOError, e:
print "File open Failed"
else:
break; #get file contents lines all = []
print "\nEnter lines('.' by itself to quit).\n" #loop until user terminate input while True:
entry = raw_input('> ')
if entry == '.':
break
else:
all.append(entry) #write lines to file with proper line-ending
#fobj = open(fname,'w')
fobj.writelines(['%s%s' % (x,ls) for x in all])
#fobj.write('\n',join(all))
fobj.close()
print "DONE" ###################################### #readTextFile.py #!/usr/bin/env python 'readTextFile.py'
import os #get filename
fname = raw_input('Enter filename: ')
print #attempt to open file for reading if os.path.exists(fname):
fobj = open(fname,'r')
for eachLine in fobj:
print eachLine, fobj.close()
3-11 移除逗号,用strip方法
代码:
#!/usr/bin/env python 'readTextFile.py'
import os #get filename
fname = raw_input('Enter filename: ')
print #attempt to open file for reading if os.path.exists(fname):
fobj = open(fname,'r')
for eachLine in fobj:
print eachLine.strip() #string.strip() fobj.close()
第五章习题:
"chapter 5 's example"
import random def countLevel(grade):
"countLevel: input a grade,output its level"
if grade > 100 or grade < 0:
return 'Grade invalid!'
elif 90 <= grade <= 100:
return 'A'
elif 80 <= grade < 90:
return 'B'
elif 70 <= grade < 80:
return 'C'
elif 60 <= grade < 70:
return 'D'
else:
return 'E' def countAvg(gradelist):
sumi = 0
for i in gradelist:
sumi += i
return float(sumi)/len(gradelist) def matchStr(ka,kb):
len1 = len(ka)
len2 = len(kb)
if len1 != len2:
return False
i = 0
while i < len1:
if ka[i] != kb[i]:
return False
i += 1
return True def moneydiv(money):
"There are 4 kinds of coins,input a num,output the minimum coins used to spell it"
m1 = m5 = m10 = m25 = 0
if money >= 25:
m25 = money/25
money -= m25*25
if money >= 10:
m10 = money/10
money -= m10*10
if money >= 5:
m5 = money/5
money -= m5*5
if money >= 1:
m1 = money
return [m1,m5,m10,m25] def EvalInt3(expression):
"input a expression,output it's consequence,only for int"
length = len(expression)
a = ""
b = ""
op = ""
first = True
tag = 0
for i in range(0,length):
if expression[i] != '+' and expression[i] != '-' and expression[i] != '*' and expression[i] != '/' and expression[i] != '%':
if first:
a += expression[i]
else:
b += expression[i]
else:
if expression[i] == '*' and expression[i-1] == '*':
tag = 6
first = False
else:
if expression[i] == '+':
tag = 1
elif expression[i] == '-':
tag = 2
elif expression[i] == '*':
tag = 3
elif expression[i] == '/':
tag = 4
elif expression[i] == '%':
tag = 5
first = False
a = int(a)
b = int(b)
if tag == 1:
return a+b
elif tag == 2:
return a-b
elif tag == 3:
return a*b
elif tag == 4:
return a/b
elif tag == 5:
return a%b
elif tag == 6:
return a**b def SquareArea(a):
return a*a def CubeVolume(a):
return a*a*a def CircleArea(r):
return 3.14159*r*r def SphereVolume(r):
return 4.0/3.0*3.14159*r*r*r def TempCtoF(c):
return str(9.0/5.0*c + 32) + 'F' def TempFtoC(f):
return str((f-32)*(5.0/9.0)) + 'C' def interest(ist):
dayist = ist/365.0/100.0
return ((1+dayist)**365 - 1.0)*100 def GCD(a,b):
"count gcd of two number"
if b:
return GCD(b,a%b)
else:
return a def RandomGO(N,n):
a = []
for i in range(0,N):
k = random.randrange(0,n)
a.append(k)
b = []
for i in range(0,N):
ind = random.randrange(0,N)
b.append(a[ind])
sorted(b)
return b def displayNumType(num):
print num,'is',
if isinstance(num,(int,long,float,complex)):
print 'a number of type:',type(num).__name__
else:
print 'not a number at all!!'
第六-七章习题:
6-12
#!/usr/bin/env python def findchr(string, char):
i = 0
for ch in string:
if ch == char:
return i
i += 1
return -1 def rfindchr(string, char):
i = len(string)-1
while i >= 0:
if(string[i] == char):
return i
i -= 1
return -1 def subchr(string, origchar, newchar):
i = 0
newstring = ""
for ch in string:
if ch == origchar:
newstring += newchar
continue
newstring += ch
return newstring print rfindchr('whatbeg','')
print rfindchr('wahtbeg','b')
print rfindchr('whahhhaaad','a')
print subchr('whatbeg','w','t')
#!/usr/bin/env python "Chapter 6" def num_to_str():
num_str = raw_input('Enter a number: ') i = 0 num_dic = {'':'zero','':'one','':'two','':'three','':'four','':'five','':'six','':'seven','':'eight','':'nine'}
res = [] while i < len(num_str):
res.append(num_dic[num_str[i]])
i += 1 i = 0
stri = '' while i < len(res)-1:
stri += res[i] + '-'
i += 1 stri += res[i] print stri "Chapter 7" def Exchange_Key_Values(dict1):
dict2 = {}
for key in dict1:
dict2[dict1[key]] = key return dict2
第八章:
# -*- coding: cp936 -*- print '输入起始值: '
num_str1 = raw_input()
num1 = int(num_str1)
print '输入结束值: '
num_str2 = raw_input()
num2 = int(num_str2) print 'DEC BIN OCT HEX ASCII'
print '----------------------------------------' for i in range(num1,num2+1):
print str(i) + ' ' + bin(i) + ' ' + oct(i) + ' ' + hex(i) + ' ' + chr(i)
第九章:
#9-4
f = open('1.txt','r') while True:
for i in range(12):
print f.readline()
a = raw_input('Press any key to continue, "q" to quit: ')
if a == 'q':
break;
else:
continue
#复制文件
print 'Enter the two file name: '
no1 = raw_input('From: ')
no2 = raw_input('To: ') f1 = open(no1,'r')
f2 = open(no2,'w') for eachLine in f1.readlines():
f2.write(eachLine) f1.close()
f2.close() print 'Done!'
#9-18 搜索某个ASCII码对应的字符在文件中出现的次数
name = raw_input('Enter the file name: ')
char_num = raw_input('And the char_num: ')
char_num_int = int(char_num)
char = chr(char_num_int) f = open(name,'r') cnt = 0 for eachLine in f.readlines():
for i in eachLine:
if char == i:
cnt += 1 f.close() print 'Done! COUNT is ' + str(cnt)
第11章:
爬取网页代码第一行和最后一行:
#!/usr/bin/env python from urllib import urlretrieve def firstNonBlank(lines):
for eachLine in lines:
if not eachLine.strip():
continue
else:
return eachLine def firstLast(webpage):
f = open(webpage)
lines = f.readlines()
f.close()
print firstNonBlank(lines)
lines.reverse()
print firstNonBlank(lines) def download(url = 'http://www.codeforces.com',process = firstLast):
try:
retval = urlretrieve(url)[0]
except IOError:
retval = None
if retval:
process(retval) if __name__ == '__main__':
download('http://acm.uestc.edu.cn/#/')
测试函数:
#!/usr/bin/env python def testit(func,*nkwargs,**kwargs):
try:
retval = func(*nkwargs,**kwargs)
result = (True, retval)
except Exception, diag:
result = (False, str(diag))
return result def test():
funcs = (int, long, float)
vals = (1234,12.34,'','12.34')
for eachFunc in funcs:
print '_'*20
for eachVal in vals:
retval = testit(eachFunc,eachVal)
if retval[0]:
print '%s(%s) = ' % (eachFunc.__name__,'eachVal'),retval[1]
else:
print '%s(%s) = FAILED: ' % (eachFunc.__name__,'eachVal'),retval[1] if __name__ == '__main__':
test()
简单GUI例子
from functools import partial
import Tkinter root = Tkinter.Tk()
MyButton = partial(Tkinter.Button,root,fg = 'white',bg = 'blue')
b1 = MyButton(text = 'Button 1')
b2 = MyButton(text = 'Button 2') qb = MyButton(text = 'QUIT',bg = 'red',command=root.quit) b1.pack()
b2.pack() qb.pack(fill = Tkinter.X,expand = True)
root.title('PFAs!')
root.mainloop()
《Python核心编程》部分代码习题实践(持续更新)的更多相关文章
- python核心编程(第二版)习题
重新再看一遍python核心编程,把后面的习题都做一下.
- Python高级编程–正则表达式(习题)
原文:http://start2join.me/python-regex-answer-20141030/ ############################################## ...
- python核心编程第二版笔记
python核心编程第二版笔记由网友提供:open168 python核心编程--笔记(很详细,建议收藏) 解释器options:1.1 –d 提供调试输出1.2 –O 生成优化的字节码(生成 ...
- 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核心编程(第3版)PDF高清晰完整中文版|网盘链接附提取码下载|
一.书籍简介<Python核心编程(第3版)>是经典畅销图书<Python核心编程(第二版)>的全新升级版本.<Python核心编程(第3版)>总共分为3部分.第1 ...
- Python核心编程-闭包
百度搜了一下闭包的概念:简而言之,闭包的作用就是在外部函数执行完并返回后,闭包使得收机制不会收回函数所占用的资源,因为内部函数的执行需要依赖外函数中的变量.这是对闭包作用的非常直白的描述,不专业也不严 ...
- 学习《Python核心编程》做一下知识点提要,方便复习(一)
学习<Python核心编程>做一下知识点提要,方便复习. 计算机语言的本质是什么? a-z.A-Z.符号.数字等等组合成符合语法的字符串.供编译器.解释器翻译. 字母组合后产生各种变化拿p ...
随机推荐
- css伪元素实现tootip提示框
先看效果 废话不说,直接上图(请把鼠标移到我的头像上),看看今天要做的是什么: 实现原理 这些提示框原理都是一样的,且只需一个div标签就能实现,当然也有笨方法,比如用多个标签相互重叠.遮盖,或者干脆 ...
- [其他]Ubuntu安装genymotion后unable to load VirtualBox engine
问题: Ubuntu安装genymotion后unable to load VirtualBox engine 解决办法: 如果没有安装VirtualBox,要先安装VirtualBox. 安装Vir ...
- iOS Address Book指南
尽管OC是一门面向对象的语言,但是在你做开发的时候你会发现,并不是所有你用的frameworks都是面向对象的.有些是用C写的,例如Address Book的API,接下来让我们去学习一下Addres ...
- 【代码笔记】iOS-改变文字输入框背景
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- TCP/IP 协议难点之一—— IP分片
1 IP协议简单介绍 就个人而言,网络中,抛开网络安全加密这些,就只单单讨论协议本身,比较难的有三个地方: IP分片与重组 TCP滑动窗口与TCP状态的改变 TCP定时器 其实协议本身根据<TC ...
- Swift开发第七篇——字面量转换&下标
本篇分为两部分: 一.Swift 中的字面量转换 二.Swift 中的下标 一.Swift 中的字面量转换 所谓字面量就是指像特定的数字,字符串或者是布尔值这样能够直接了当地指出自己的类型并未变量进行 ...
- 查看特定View的默认属性值
当我在分析focus.touch事件处理代码时发现,有些属性对代码的逻辑有非常重要的影响,比如clickable.focusable 这些属性.这时我们自然而然的想到,那么这些属性的默认值是什么呢?在 ...
- 自动化部署与统一安装升级 - 类ansible工具 udeploy0.3版本发布 (更新时间2014-12-24)
下载地址: unifyDeploy0.1版本 unifyDeploy0.2版本 unifyDeploy0.3版本 (更新时间2014-07-25) 自动化部署与统一安装升级,适用于多资 ...
- php示例代码之使用mysqli对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- EnumMap
以下内容基于jdk1.7.0_79源码: 什么是EnumMap Map接口的实现,其key-value映射中的key是Enum类型: 补充说明 其原理就是一个对象数组,数组的下标索引就是根据Map中的 ...