遍历的方法:
第一种是用while:
index = 0
while index < len(fruit):
letter = fruit[index]
print(letter)
index = index + 1
第二种是用for:
prefixes = 'JKLMNOPQ'
suffix = 'ack'
for letter in prefixes:
print(letter + suffix)
这个for的特性有点像C++11 里面的特性。
这个letter在此不为索引数字,而是遍历过程中所得的string。
字符串切片:
>>> s = 'Monty Python'
>>> s[0:5]
'Monty'
>>> s[6:12]
'Python'
[n:m]这种操作符,会返回字符串中从第『n』个到第『m』个的字符,包含开头的第『n』个,但不包含末尾的第『m』个。
如果你忽略了第一个索引(就是冒号前面的那个),切片会默认从字符串头部开始。如果你忽略了第二个索引,切片会一直包含到最后一位:
>>> fruit = 'banana'
>>> fruit[:3]
'ban'
>>> fruit[3:]
'ana'
如果两个索引相等,得到的就是空字符串了,用两个单引号来表示;如果是[:]则显示整个字符串:
>>> fruit = 'banana'
>>> fruit[3:3]
''
>>>fruit[:]
banana
字符串不可修改:
>>> greeting = 'Hello, world!'
>>> greeting[0] = 'J'
TypeError: 'str' object does not support item assignment
字符串方法:
word.upper()--全部小写变大写
word.find()--可查找字符、字符串、从指定位置查找..
运算符in:
in 这个词在字符串操作中是一个布尔操作符,它读取两个字符串,如果前者的字符串为后者所包含,就返回真,否则为假:
>>> 'a' in 'banana'
True
>>> 'seed' in 'banana'
False
练习1:
阅读 https://docs.python.org/2/library/stdtypes.html?highlight=strip#str.strip关于字符串的文档。你也许会想要试试其中一些方法,来确保你理解它们的意义。比如 strip 和 replace 都特别有用。
文档的语法有可能不太好理解。比如在find 这个方法中,方括号表示了可选参数。所以 sub 是必须的参数,但 start 是可选的,如果你包含了 start,end 就是可选的了。
strip([char]):裁剪函数,用于裁剪前后字符。
str.strip([char]):以char内的作为关键字,同时从左往右、从右往左开始检测str里的关键字,一经检测到,立即删除,直至遇到非关键字才会停下。若char省略掉或为空,则默认为关键字为“空格”。
例:print('www.examples.com'.strip('mcw'))
answer:runfile('C:/Users/Lenovo/.spyder/temp.py', wdir='C:/Users/Lenovo/.spyder')
.examples.co
replace(old,new[,count]):替换函数。
str.replace(old,new[,count])
例:print('www.examples.com'.replace('w','a',2))
answer:aaw.examples.com
print('www.examples.com'.replace('w','a'))
answer:aaa.examples.com
练习2:
字符串有个方法叫 count,与咱们在8.7中写的 count 函数很相似。 阅读一下这个方法的文档,然后写一个调用这个方法的代码,统计一下 banana 这个单词中 a 出现的次数 。
例:print('www.examples.com'.count('w',0,2))------这个字符串切片同样:包含首不包含尾。
answer:2
print('www.examples.com'.count('w'))
answer:3
练习3:
字符串切片可以使用第三个索引,作为步长来使用;步长的意思就是取字符的间距。一个步长为2的意思就是每隔一个取一个字符;3的意思就是每次取第三个,以此类推。
>>> fruit = 'banana'
>>> fruit[0:5:2]
'bnn'
步长如果为-1,意思就是倒序读取字符串,所以[::-1]这个切片就会生成一个逆序的字符串了。
练习5:
凯撒密码是一种简单的加密方法,用的方法是把每个字母进行特定数量的移位。对一个字母移位就是把它根据字母表的顺序来增减对应,如果到末尾位数不够就从开头算剩余的位数,『A』移位3就是『D』,而『Z』移位1就是『A』了。
要对一个词进行移位,要把每个字母都移动同样的数量。比如『cheer』这个单词移位7就是『jolly』,而『melon』移位-10就是『cubed』。在电影《2001 太空漫游》中,飞船的电脑叫 HAL,就是 IBM 移位-1。
写一个名叫 rotate_word 的函数,接收一个字符串和一个整形为参数,返回将源字符串移位该整数位得到的新字符串。
你也许会用得上内置函数 ord,它把字符转换成数值代码,然后还有个 chr 是用来把数值代码转换成字符。字母表中的字母都被编译成跟字母表中同样的顺序了,所以如下所示:
>>> ord('c') - ord('a')
2
c 是字母表中的第『2』个(译者注:从0开始数哈)的位置,所以上述结果是2。但注意:大写字母的数值代码是和小写的不一样的。
code:
def rotate_letter(letter,n):
if letter.isupper():
start=ord('A')
elif letter.islower():
start=ord('a')
elif letter.isdigit():
return chr(ord(letter)+n)
else:
letter
c=ord(letter)-start
i=(n+c)%26+start
return chr(i)
def rotate_word(s,n):
res = ''
for letter in s:
res += rotate_letter(letter, n)
return res
print(rotate_word('a1z',1))