《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','3') 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 = {'0':'zero','1':'one','2':'two','3':'three','4':'four','5':'five','6':'six','7':'seven','8':'eight','9':'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,'1234','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()
作者:whatbeg
出处1:http://whatbeg.com/
出处2:http://www.cnblogs.com/whatbeg/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
更多精彩文章抢先看?详见我的独立博客: whatbeg.com