6–1. 字符串.
string 模块中是否有一种字符串方法或者函数可以帮我鉴定一下一个字符串是否是另一个大字符串的一部分?
# coding=utf-8
__author__ = 'Ibuki Suika'
if __name__ == '__main__':
s1 = raw_input('input a string: ')
s2 = raw_input('input a substring: ')
print(s1.find(s2) <> -1)
6–2. 字符串标识符.
修改例6-1 的idcheck.py 脚本,使之可以检测长度为一的标识符,并且可以识别Python 关键字,对后一个要求,你可以使用keyword 模块(特别是keyword.kelist)来帮你.
import string
import keyword
alphas = string.letters + '_'
nums = string.digits
keywords = keyword.kwlist
print 'Welcome to the Identifier Checker v2.0'
myInput = raw_input('Identifier to test? ')
if myInput[0] not in alphas:
print 'invalid: first symbol must be alphabetic'
else:
sets = alphas + nums
mark = True
for ch in myInput[1:]:
if ch not in sets:
print 'invalid: remaining symbols must be alphanumeric'
mark = False
break
if myInput in keywords:
print "invalid: can't be keywords"
mark = False
if mark:
print 'okay as an identifier'
6–3. 排序
(a) 输入一串数字,从大到小排列之.
(b) 跟a 一样,不过要用字典序从大到小排列之.
# coding=utf-8
__author__ = 'Ibuki Suika'
if __name__ == '__main__':
s = raw_input('input some numbers: ').split()
nums = [int(i) for i in s]
nums.sort()
nums.reverse()
print(nums)
s.sort()
s.reverse()
print(s)
6–4. 算术.
更新上一章里面你的得分测试练习方案,把测试得分放到一个列表中去.你的代码应该可以计算出一个平均分,见练习2-9 和练习5-3.
def level(score):
if score >= 90:
return 'A'
elif score >= 80:
return 'B'
elif score >= 70:
return 'C'
elif score >= 60:
return 'D'
else:
return 'F'
str = raw_input('your scores: ').split()
average = 0
scores = []
for n in str:
num = int(n)
scores.append(level(num))
average += num
average /= float(len(scores))
print 'average score is %.2f' % average
print scores
6–5. 字符串
(a)更新你在练习2-7 里面的方案,使之可以每次向前向后都显示一个字符串的一个字符.
(b)通过扫描来判断两个字符串是否匹配(不能使用比较操作符或者cmp()内建函数)。附加题:在你的方案里加入大小写区分.
(c)判断一个字符串是否重现(后面跟前面的一致).附加题:在处理除了严格的回文之外,加入对例如控制符号和空格的支持。
(d)接受一个字符,在其后面加一个反向的拷贝,构成一个回文字符串.
s = raw_input('string: ')
for ch in s:
print ch,
print
for ch in reversed(s):
print ch,