• 《Python核心编程》第二版第160页第六章练习


    和大家分享自己完成的《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核心编程习题代码 非官方 博客园

  • 相关阅读:
    《图书管理系统》可行性分析的安排
    成员的个人介绍
    [译] 数据库是如何工作(一)介绍
    [译]数据库是如何工作(二)回到原点 算法基础
    [译]数据库是如何工作(三)全文概述
    [译]数据库是如何工作(四)客户端管理
    [译]数据库是如何工作(五)查询管理器
    [译]数据库是如何工作(六)数据管理器
    docker 集群 zookeeper 碰到 java.net.NoRouteToHostException: Host is unreachable (Host unreachable)
    啰嗦的 java,简洁的 lombok —— lombok 的使用及简单实现单例模式注解
  • 原文地址:https://www.cnblogs.com/balian/p/1949107.html
Copyright © 2020-2023  润新知