Chapter6~序列:字符串、列表、元组

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

string.find()

string.index()

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

162116_Xnav_2772312.png

6-3 排序

(a) 输入一串数字,并从大到小排列之

(b)跟a一样,不过要用字典序从大到小排列。

(a)

162803_qisF_2772312.png

(b)

164627_BOGO_2772312.png

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

165437_sQaR_2772312.png

6-5 字符串

(a) 更新你在练习2-7里面的方案,使之可以每次向前向后都显示一个字符串的一个字符。

(b)通过扫描来判断两个字符串是否匹配(不能使用比较操作符或者cmp()内建函数)。

(c)判断一个字符串是否重现(后面跟前面的一致)。附加题:在处理除了严格的回文之外,加入对例如控制符号和空格的支持。

(d)接受一个字符串,在其后面加一个反向的拷贝,构成一个回文字符串。

(a)

170958_GVAX_2772312.png

(b)

171807_TyR0_2772312.png

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

182409_tKE8_2772312.png

6-7 调试。看一下在例6.5中给出的代码(buggy.py)

(a)研究这段代码并描述这段代码想做什么。在所以的(#)处都要填写你的注释。

(b)这个程序有一个很大的问题,比如输入6、12、20/30等它会死掉。实际上它不能处理任何的偶数,找出原因。

(c)修正(b)中提出的问题。

191323_xJ94_2772312.png

6-8列表。给出一个整形值,返回代表该值的英文,比如输入89返回‘eight-nine’。附加题:能够返回符合英文语法规则的形式,比如输入‘89’返回‘eighty-nine’。本练习中的值限定在0~1000.

193114_OyoX_2772312.png

6-9 转换。为练习5-13 写一个姐妹函数, 接受分钟数, 返回小时数和分钟数. 总时间不变,并且要求小时数尽可能大.

193436_OVBf_2772312.png1.

6-10字符串。写一个函数,返回一个跟输入字符串相似的字符串,要求字符串的大小写反转。比如,输入‘Mr.Ed’,应该返回‘mR.eD’作为输出。

194848_kDt1_2772312.png

6-11 转换。

(a)创建一个从整型到IP地址的转换程序,如下格式: WWW.XXX.YYY.ZZZ。

(b)更新你的程序,使之可以逆转换。

200409_9f21_2772312.png

6-12 字符串

(a) 创建一个名字为findchr()的函数,函数声明如下:

  def findchr(string, char)

findchr()要在字符串string中查找字符char,找到就返回该值的索引,否则返回-1.不能用string.*fing()或者string.*index()函数和方法。

(b)创建另一个叫rfindchr()的函数,查找字符char最后一次出现的位置。它跟findchr()工作类似,不过它是从字符串的最后开始向前查找的。

(c)创建第三个函数,名字叫subchr(),声明如下。

   def subchr(string,origchar,newchar)

subchr()跟findchr()类似,不同的是,如果找到匹配的字符就用新的字符替换原先字符。返回修改后的字符串。

(a)

201630_C2Qv_2772312.png

(b)

201958_azMm_2772312.png

(c)

202353_DWbE_2772312.png

6-13 字符串.string模块包含三个函数,atoi()、atol()、atof(),它们分别负责把字符串转换为整型、长整型和浮点型数字。从Python1.5起,Python的内建函数int()、long()、float()也可以做相同的事了,complex()函数可以把字符串转换成复数。string模块并没有实现一个atoc()函数,那么你来实现一个,接受单个字符串做参数输入,一个表示复数的字符串,例如‘-1.23e+4-5.67j’,返回相应的复数对象。你不能用eval()函数,但可以使用complex()函数,而且你只能在如下的限制之下使用:complex():complex(real,imag)的real和imag都必须是浮点值。

待补

6-14 随机数。设计一个“石头、剪子、布”游戏,有时又叫“Rochambeau”,你小时候可能玩过。下面就是规则。你和你的对手,在同一个时间做出特定的手势,必须是下面一种:石头、剪子、布。胜利者从下面的规则中产生,这个规则本身是个悖论。

(a)布包石头

(b)石头砸剪子

(c)剪子剪破布。在你的计算机版本中,用户输入她/他的选项。计算机找一个随机选项,然后由你的程序来决定一个胜利者或平手。注意:最好的算法是尽量少的使用if语句。

205625_3Gd7_2772312.png

6-15 转换.

    (a). 给出两个可识别格式的日期, 比如MM/DD/YY 或者 DD/MM/YY 格式, 计算出两个日期间的天数.

    (b). 给出一个人的生日, 计算从此人出生到现在的天数,包括所有的闰月. 

    (c). 还是上面的例子,计算出此人下次过生日还有多少天. 

    (a)

210131_lViC_2772312.png

(b)

210246_6T1t_2772312.png

(c)

210352_cSv2_2772312.png

6-16 矩阵。处理矩阵M和N的加和乘操作。

212213_r7eu_2772312.png

212237_ZBzn_2772312.png

6-17 方法。实现一个叫myPop()的函数,功能类似于列表的pop()方法,用一个列表作为输入,移除列表的最新一个元素,并返回它。

214525_gPbe_2772312.png

214548_wU3t_2772312.png

6-18 zip()内建函数。在6.13.2节里面关于zip()函数的例子中,zip(fn,ln)返回的值是什么?

215100_4E7l_2772312.png

6-19 多列输出。有任意项的序列或者其他容器,把他们等距离分列显示。由调用者提供数据和输出格式。例如,如果你传入100个项并定义3列输出,按照需要的模式显示这些数据。这种情况下,应该是两列显示33个项,最后一列显示34个。你可以让用户来选择水平排序或垂直排序。

222051_9Eh6_2772312.png

 

转载于:https://my.oschina.net/xyjiejie/blog/711418

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值