《Python核心编程》第二版第六章练习题答案-第二部分
6–6. 字符串.
创建一个string.strip()的替代函数:接受一个字符串,去掉它前面和后面的
空格(如果使用string.*strip()函数那本练习就没有意义了)
解答:
#/usr/bin/python #!Filename:6-6.py ''' Created on 2012-7-24 @author: wanglei ''' def mystrip(astring): alist=list(astring) list_len=len(alist) while alist[0]==" ": del alist[0] while alist[len(alist)-1]==" ": del alist[len(alist)-1] print "".join(alist) bstring=raw_input("please input a string: ") mystrip(bstring)
测试数据:
please input a string: python is good
python is good
注意:输入的字符串前后都有若干空格
6–8. 列表.给出一个整数值,返回代表该值的英文,比如输入89 返回"eight-nine"。附加题:
能够返回符合英文语法规则的形式,比如输入“89”返回“eighty-nine”。本练习中的值限定在0
到1,000.
解答:
# -*- coding:utf-8 -*- #!/usr/bin/python #Filename:6-8.py ''' Created on 2012-7-24 @author: wanglei ''' #原题目,函数返回一个整数的普通英文表示 def returnchar(num): dic={'0':'zero','1':'one','2':'two','3':'three','4':'four','5':'five','6':'six',\ '7':'seven','8':'eight','9':'nine'} result="" for i in num: result +=dic[i]+"-" result=result[:-1] print result #附加题,函数返回一个整数的正规英文表示 def returnformalchar(num): dic_unit={'0':'zero','1':'one','2':'two','3':'three','4':'four','5':'five','6':'six',\ '7':'seven','8':'eight','9':'nine','10':'ten'} dic_decade={'11':'eleven','12':'twelve','13':'thirteen','14':'fourteen','15':'fifteen',\ '16':'sixteen','17':'seventeen','18':'eighteen','19':'nineteen','20':'twenty'} dic_decade2={'2':'twenty','3':'thirty','4':'forty','5':'fifty','6':'sixty','7':'seventy',\ '8':'eighty','9':'ninety'} intnum=int(num) result="" #这个函数专门处理21到99之间的数据 def returnchar2xto9x(mynum): myresult=dic_decade2[mynum[0]]+"-"+dic_unit[mynum[1]] return myresult if intnum>1000: print "输入的数字超出范围了" return if intnum<11: result=dic_unit[num] elif intnum<21: #if num==20: # result="twenty" #else: result=dic_decade[num] elif intnum<100: result=returnchar2xto9x(num) else: result=dic_unit[num[0]]+" hundred-"+returnchar2xto9x(num[1:]) print result num=raw_input("input a num: ") returnformalchar(num)
测试数据:
input a num: 321
three hundred-twenty-one