搜索
def find(word,letter):
index = 0
while index < len(word):
if word[index] == letter;
return index
index = index+1
return -1
find接收的是字符,并找到该字符所在的索引,如果没有找到该字符,函数返回-1
再循环内部使用return,如果找到字符,函数停止循环马上返回
这种计算模式,遍历一个蓄力并在找到寻找的东西时返回,被称作搜索
循环和计数
计算字母a在字符串中出现的次数
word = 'banana'
count = 0
for letter in word:
if letter == 'a':
count = count + 1
print(count)
变量count初始化为0,然后每次出现a时递增。当循环结束时,count包含了字母a出现的总次数
字符串方法
字符串提供了可执行多种有用操作的方法。方法和函数类似,接受实参并返回一个值,但是语法不通
word = 'banana'
new_word = word.upper()
点标记法指出方法的名字,空括号表示不接受实参
这被称作方法调用
也存在find字符串方法
word = 'banana'
index = word.find('a')
find方法还可以查找子字符串,而不仅仅是字符
word.find('na')
find默认从字符串的首字母开始查找,它还可以接受第二个实参,即从何处开始的索引
word.find('na',3)
find也可以接受结束查找的索引作为第三个实参
name = 'bob'
name.find('b',1,2)
搜索时不包括结束查找的索引,类似切片
in运算符
in是一个布尔运算符,接受两个字符串,如果第一个作为子串出现在第二个中,则返回True
'a'in'banana'
字符串比较
关系运算符也适用于字符串,可以这样检查两个字符串是否相等
if word == 'banana'
print('same')
其它关系运算符对于按字母顺序放置单词也很有用
if word < 'banana':
print('before')
elif word > 'banana':
print('after')
else:
print('same')
在python中所有大写字母出现在所有小写字母之前
所以执行比较前,最好将字符串转化为标准形式
文字游戏
通过查找具有特定属性的单词来解答字谜游戏
读取单词列表
使用Mody集合
使用python打开文本文件
内建函数opne接受文件名作为形参,并返回一个文件对象,可以用它读取该文件
fin = open('words.txt')
文件对象提供了几个读取方法,包括readline,从文件中读取字符直到碰到新行,并将其作为字符串返回
序列\r\n代表两个空白字符回车和换行,它们将这个单词和下一个分开
此文件对象跟踪它在文件中的文职,所以如果再次调用readline,将会获得下一个单词
如果不想要空白字符,可以用字符串方法strip删掉它
line = fin.readline()
word = line.strip()
也可以将文件对象用做for循环的一部分,读取txt并打印每个单词,每行一个
fin = open(words.txt)
for line in fin:
word = line.strip()
print(word)