• Python核心编程(第二版) 第六章习题答案


    6–1.字符串.string 模块中是否有一种字符串方法或者函数可以帮我鉴定一下一个字符串
    是否是另一个大字符串的一部分?

    答:有,string.find(str,beg,end)

    6–2.字符串标识符.修改例 6-1 的 idcheck.py 脚本,使之可以检测长度为一的标识符,并且
    可以识别 Python 关键字,对后一个要求,你可以使用 keyword 模块(特别是 keyword.kelist)来帮你.

     1 #!/usr/bin/python
     2 
     3 import string
     4 import keyword
     5 import sys
     6 
     7 Startwith=string.letters+'_'
     8 Othersymbol=string.letters+'_'+string.digits
     9 def CheckID(s):
    10         if s[0] in Startwith:
    11                 if len(s)==1:
    12                         print "The ID is valid"
    13                         if s in keyword.kwlist:
    14                                 print "And the ID is a key word"
    15                 else:
    16                         for j in s[1:]:
    17                                 if j not in Othersymbol:
    18                                         print "The other symbol is invalid."
    19                                         sys.exit()
    20                         print "The ID is valid."
    21                         if s in keyword.kwlist:
    22                                 print "And the ID is a key word"
    23         else:
    24                 print "The startwith is invalid."
    25 
    26 
    27 
    28 
    29 if __name__=="__main__":
    30         sid=raw_input("Enter a string:")
    31         CheckID(sid)

    6–3.排序

    (a) 输入一串数字,从大到小排列之.
    (b) 跟 a 一样,不过要用字典序从大到小排列之.

     1 #!/usr/bin/python
     2 
     3 astring=raw_input("Enter a list of num:")
     4 alist=astring.split()
     5 print alist
     6 
     7 ilist=[]
     8 for s in alist:
     9         i=int(s)
    10         ilist.append(i)
    11 
    12 print ilist
    13 print sorted(ilist)
    14 #print ilist.sort()
    15 print sorted(alist)
    16 #print alist.sort()

    6–4.算术. 更新上一章里面你的得分测试练习方案,把测试得分放到一个列表中去.你的代
    码应该可以计算出一个平均分,见练习 2-9 和练习 5-3.

     1 !/usr/bin/python
     2 
     3 def value(num):
     4         if 90<=num<=100:
     5                 #print 'A'
     6                 return 'A'
     7         elif 80<=num<=89:
     8                 #print 'B'
     9                 return 'B'
    10         elif 70<=num<=79:
    11                 #print 'C'
    12                 return 'C'
    13         elif 60<=num<=69:
    14                 #print 'D'
    15                 return 'D'
    16         elif num>=0 and num<60:
    17                 #print 'F'
    18                 return 'F'
    19         else:
    20                 print  "The num is invalid."
    21 
    22 
    23 if __name__=="__main__":
    24         vlist=[]
    25         ilist=[56,34,78,90,62,81,100]
    26         for i in ilist:
    27                 vlist.append(value(i))
    28         print vlist
    29         print sorted(ilist)

    6–5.
    字符串
    (a)更新你在练习 2-7 里面的方案,使之可以每次向前向后都显示一个字符串的一个字符.
    (b)通过扫描来判断两个字符串是否匹配(不能使用比较操作符或者 cmp()内建函数)。附加题:
    在你的方案里加入大小写区分.
    (c)判断一个字符串是否重现(后面跟前面的一致).附加题:在处理除了严格的回文之外,加入对
    例如控制符号和空格的支持。
    (d)接受一个字符,在其后面加一个反向的拷贝,构成一个回文字符串.

    答:

    c

     1 #!/usr/bin/python
     2 #encoding=utf-8
     3 #判断一个字符串是否重现(后面跟前面的一致).
     4 #附加题:在处理除了严格的回文之外,加入对例如控制符号和空格的支持。
     5 import sys
     6 
     7 def palindorom(s):
     8         l=len(s)
     9         if l%2<>0:
    10                 print "The string is not palindorom."
    11         else:
    12                 for i in (0,int((l-1)/2)):
    13                         if s[i]==s[-(i+1)]:
    14                                 pass
    15                         else:
    16                                 print "The string is not palindorom."
    17                                 sys.exit()
    18                 print "The string is a palindorom."
    19 
    20 if __name__=="__main__":
    21         astring=raw_input("Enter a string:")
    22         palindorom(astring)

    d

     1 #!/usr/bin/python
     2 #encoding:utf-8
     3 #接受一个字符,在其后面加一个反向的拷贝,构成一个回文字符串.
     4 
     5 original=raw_input("Enter a string:").strip()
     6 length=len(original)
     7 palindorom=original
     8 for i in range(1,length+1):
     9         palindorom=palindorom+original[-i]
    10 
    11 print palindorom

    6–6.字符串.创建一个 string.strip()的替代函数:接受一个字符串,去掉它前面和后面的
    空格(如果使用 string.*strip()函数那本练习就没有意义了)

     1 #!/usr/bin/python
     2 #encoding:utf-8
     3 #创建一个 string.strip()的替代函数:接受一个字符串,去掉它前面和后面的
     4 #空格(如果使用 string.*strip()函数那本练习就没有意义了)
     5 
     6 original=raw_input("Enter a string:")
     7 length=len(original)
     8 print length
     9 for i in range(0,length):
    10         if original[i]<>' ':
    11                 lstrip=original[i:]
    12                 print len(lstrip)
    13                 break
    14         else:
    15                 pass
    16 
    17 
    18 for i in range(1,length+1):
    19         if lstrip[-1]<>' ':
    20                 strip=lstrip
    21                 break
    22         elif lstrip[-i]<>' ':
    23                 strip=lstrip[:-i+1]
    24                 print len(strip)
    25                 break
    26         else:
    27                 pass
    28 
    29 print strip

     6–7.调试.看一下在例 6.5 中给出的代码(buggy.py)
    (a)研究这段代码并描述这段代码想做什么.在所有的(#)处都要填写你的注释.
    (b)这个程序有一个很大的问题,比如输入 6,12,20,30,等它会死掉,实际上它不能处理任何的偶
    数,找出原因.
    (c)修正(b)中提出的问题.

     1 #!/usr/bin/python
     2 
     3 num_str=raw_input("Enter a number:")
     4 
     5 num_num=int(num_str)
     6 
     7 fac_list=range(1,num_num+1)
     8 
     9 print "BEFORE:",fac_list
    10 i=0
    11 while i<len(fac_list):
    12         if num_num % (fac_list[i])==0:
    13                 del fac_list[i]
    14         else:
    15                 i=i+1
    16 
    17 print "AFTER:",fac_list
  • 相关阅读:
    Redis之String
    代码质量管理工具——SonarQube
    XML文件(2)--使用DOM4J示例
    XML文件(1)--使用DOM示例
    Maven之构件
    使用JS,获取URL中指定参数的值
    jQuery导入Eclipse后报错解决方法
    关于MySQL存储过程中遇到的一个错误
    学习MySQL之数据类型(四)
    jmeter直连数据库【转】
  • 原文地址:https://www.cnblogs.com/tmyyss/p/3768821.html
Copyright © 2020-2023  润新知