《Python核心編程》第二版第160頁第六章練習

來源:互聯網
上載者:User

和大家分享自己完成的《Python核心編程》習題答案。
因為不是來自官方資源,是自己的的練習,可能有誤或者並非最好的解決辦法。

【推薦】推薦博文:牛B的Python模組
http://www.cnblogs.com/chu888chu888/archive/2011/01/09/1931084.html

【推薦】推薦博文:Python核心編程練習第六章,別人做的練習
http://blog.csdn.net/killua_hzl/archive/2010/05/31/5637828.aspx

【推薦】推薦博文:全排列演算法之字典序法
http://blog.sina.com.cn/s/blog_4c471b9601000czy.html

【推薦】部落格:異そ度︶空ツ間,關於Python的學習
http://blog.csdn.net/killua_hzl/category/681280.aspx

 

6-1.
字串。string模組中是否有一種字串方法或者函數可以幫我評鑑下一個字串是否是另一個大字串的一部分?
【答案】
成員操作符用於判斷一個字元或者一個字串(中的字元)是否出現在另一個字串中。出現則返回True,否者返回False。注意,成員操作符不是用來判斷一個字串是否包含另一個字串的,這樣的功能由find(),index(),rfind()和rindex()函數來完成。
>>> 'bc' in 'abcd'
True
>>> 'n' in 'abcd'
False

 

6-2.
字串標識符。修改例6-1的idcheck.py指令碼,使之可以檢測長度為一的標識符,並且可以識別Python關鍵字。對後一個要求,你可以使用keyword模組(特別是keyword.kwlist)來輔助。
【評】
我懷疑題目的原意是修改指令碼後使之可以檢測長度大於等於一的標識符。
【參考】
idcheck.py指令碼
import string

alphas = string.letters + '_'
nums = string.digits

print 'Welcome to the Identifier Checker v1.0'
print 'Testees must be at least 2 chars long.'

myInput = raw_input('Identifier to test?')

if len(myInput) > 1:
   
    if myInput[0] not in alphas:
        print '''invalid: first symbol must be alphabetic'''
   
    else:
        for otherChar in myInput[1:]:
           
            if otherChar not in alphas + nums:
                print '''invalid: first symbol must be alphabetic'''
                break
            else:
                print 'okay as an identifier'

【參考】關於keyword.kwlist

>>> import keyword

>>> dir(keyword)
['__all__', '__builtins__', '__doc__', '__file__', '__name__', 'iskeyword', 'kwlist', 'main']

>>> keyword.kwlist
['and', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'yield']
>>>
【答案】
代碼如下:
import string
import keyword

alphas = string.letters + '_'
nums = string.digits

print 'Welcome to the Identifier Checker v2.0'
print 'Testees must be at least 1 chars long.'

myInput = raw_input('Identifier to test?   ')

isKeyword = False
isIdentifier = False

if len(myInput) >= 1:
   
    if myInput[0] not in alphas:
        print '''invalid: first symbol must be alphabetic'''
        isIdentifier = False
    else:
        for otherChar in myInput[1:]:
           
            if otherChar not in alphas + nums:
                print '''invalid: remaining symbols must be alphabetic'''
                isIdentifier = False
                break
            else:
                isIdentifier = True               

if myInput in keyword.kwlist:
     print '"%s" is a keyword of Python' % myInput
     isKeyword = True
if isIdentifier and (not isKeyword): print 'okay as an identifier'

 

6-3.
排序。
(a)輸入一串數字、並從大到小排列之。
(b)跟a一樣。不過要用字典序從大到小排列。
【答案】
(a)代碼如下:
aList = raw_input('Please input numbers, separated by space ... ')
bList = []
for i in aList.split(' '):
    bList.append(int(i))
bList.sort()
print bList[::-1]
(b)代碼如下:
aList = raw_input('Please input numbers, separated by space ... ')
bList = []
for i in aList.split(' '):
    bList.append(i)
bList.sort()
print bList[::-1]
【評】
我查了字典序的具體意思,好像和題目的意思並不相符。

關鍵詞:Pyhon核心編程習題代碼 非官方 部落格園

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.