• 《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 "
    Enter lines('.' by itself to quit).
    "
    
    #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('
    ',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()
    View Code

    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()
    View Code

    第五章习题:

    "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!!'
    View Code

    第六-七章习题:

    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')
    View Code
    #!/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
    View Code

    第八章:

    # -*- 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)
    View Code

    第九章:

    #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
    View Code
    #复制文件
    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()
  • 相关阅读:
    心血来潮学python
    lua中的table、stack和registery
    wrapper for lua
    FT232RL变砖之后
    12.04 redmine
    Webpack 概念
    如何学习 Webpack
    React基础篇
    Intellij实用技巧
    一行代码搞定图片缩放、旋转、加水印
  • 原文地址:https://www.cnblogs.com/whatbeg/p/3661950.html
Copyright © 2020-2023  润新知