一,循環和計數
下面這個程序計算了字母 a 在一個字符串中出現的次數:
$ cat b.py
#!/bin/python
word = 'banana'
count = 0
for letter in word:
if letter == 'a':
count = count + 1
print(count)
$ python3 b.py
0
1
1
2
2
3
解釋一下這個執行結果。
循環開始,第1個字母為b,執行if條件,b不等於a,故不再執行累加語句count = count + 1,直接打印count的初始值0;
循環第二次,字母為a,執行if條件,a等於a,執行累加語句count = 0 + 1,count值變為1;
循環第三次,字母為n,執行if條件,n不等於a,故不再執行累加,count值仍然是1;
循環第四次,字母為a,執行if條件,a等於a,執行累加語句count = 1 + 1,count值變為2;
第五次,第六次依次類推,最終打印的count值是3,即賦值為word的字符串中有3個字母a。
這一程序展示了另外一種計算模式,叫做計數。變量count被初始化為0,然后循環性地去找字母a,每次在字符串中找到一個a,就讓count加1,當循環退出的時候,count就包含了 a 出現的總次數。
二,字符串方法
字符串提供了一些方法,這些方法能夠進行很多有用的操作。方法和函數有些類似,也接收參數然后返回一個值,但語法稍微不同。
比如,upper這個方法就讀取一個字符串,返回一個全部為大寫字母的新字符串。
但是,與函數的 upper(word)語法不同,字符串方法的語法是 word.upper()
>>> word = 'banana'
>>> new_word = word.upper()
>>> new_word
'BANANA'
這種用點號分隔的方法表明了使用的方法名字為upper,使用這個方法的字符串的名字為word。后面括號里面是空白的,表示這個方法不接收參數。我們可以說調用了word的upper方法。
字符串還有一個方法叫find,看例子:
>>> word = 'banana'
>>> index = word.find('a')
>>> index
1
在這里我們調用了word的find方法,然后給定了我們要找的字母 a作為一個參數,輸出索引值為1。
實際上,這個find方法比我們的find函數功能更通用,它不僅能查找字符,還能查找字符串:
>>> word = 'banana'
>>> word.find('na')
2
返回所查找字符串的第一個字符在‘banana’所在的索引位置。即'na'中n在字符串'banana'的索引位置是2。
默認情況下 find方法是從字符串的開頭查找,不過可以給它定義第二個參數,讓它從指定位置查找:
>>> word = 'banana'
>>> word.find('na', 3)
4
即從第3個索引位置查找。
另外,find 方法還能接收第三個參數,可以指定查找終止的位置:
>>> name = 'jack'
>>> name.find('a', 1, 2)
1
>>> name.find('a', 2, 4)
-1
第二個語句的搜索失敗了,因為a並沒有在索引2到4且不包括4的字符中間出現。搜索到指定的第三個變量作為索引的位置,但不包括該位置,這就讓find方法與切片操作符相一致。
結束。