使用for迴圈遍歷字元
由於好久沒用for迴圈了,有點生疏,竟然寫成了下面**
fruit=
'banana'
len(fruit)
index=
0for index<
len(fruit)
:print
(fruit[index]
) index+=
1
file 「」, line 3
for index報錯是肯定的了,這是把for迴圈和while迴圈雜糅了,還是應該注意下for迴圈和while迴圈的區別
fruit=
'banana'
len(fruit)
index=
0while index<
len(fruit)
:print
(fruit[index]
) index+=
1
這個是能正常列印的,但是while確實不適合做遍歷迴圈,用for會更簡單一些
for char in fruit:
print
(char)
這裡記錄兩個replace和strip
#str.replace(old,new[,count]) 表示裡面的是可選,count,表示只替換前count次出現
word=
'banana'
word.replace(
'na'
,'se'
)word.replace(
'na'
,'se',1
)#只替換了第乙個na
#str.strip([chars]) 預設移除前後的空格,輸入chars則移除chars
' hello '
.strip(
)'www.example.com'
.strip(
'cmowz.'
)
#strip從開頭和結尾分別向中間篩選,遇到第乙個非chars則停止
a='#.......section 3.2.1 issue #32.......'
a.strip(
'.#!'
)#從此結果看出,中間的 .和#都沒有被移除,因為前面都有不是chars的部分
輸出結果是:『section 3.2.1 issue #32』
def
is_reverse
(word1,word2):if
len(word1)
!=len
(word2)
:return
false
i=0 j=
len(word2)-1
#注意需要減一,否則會超出下標範圍
while j>=0:
#注意要大於等於0,而不是大於0,否則會少比較乙個
if word1[i]
!=word2[j]
:return
false
i+=1 j-=
1return
true
is_reverse(
'stp'
,'pots'
)
def
is_palindrome
(word)
:if word==word[::
-1]:
return
true
return
false
is_palindrome(
'helleh'
)
題目中有些用一行把這個函式寫出來,說到一行我首先想到就是用lambda函式,思來想去寫出了如下**:
is_palindrome=
lambda word:
(true
if word==word[::
1],false
)is_palindrome(
'hello'
)
file "", line 2
is_palindrome=lambda word:(true if word==word[::1],false)
^syntaxerror: invalid syntax
結果就報錯了嘛,上網查了下lambda是不能用if語句的,後面有機會詳細補充下lambda的用法以及其和def函式的區別
編寫乙個函式rotate_word,接收乙個字串以及乙個整數作為引數,並返回乙個新字串,其中字母按照給定的整數值輪轉位置,『a』移動3個位置是』d』,『z』移動1個位置是』a』.
def
rotate_word
(word,num)
: new_word=
''for letter in word:
chr(
ord(letter)
+num)
)return new_word
rotate_word(
'a',
1)
attributeerror traceback (most recent call last)
6 return new_word
----> 7 rotate_word('a',1)
in rotate_word(word, num)
3 new_word=''
4 for letter in word:
6 return new_word
7 rotate_word('a',1)
def
rotate_word
(word,num)
: new_word=
''for letter in word:
new_word=new_word+
(chr
(ord
(letter)
+num)
)#這個位置改動
return new_word
rotate_word(
'z',
1)
但是輸出結果預期是』a』,但顯示的是』[』,這顯然是對unicode不熟悉,以及對題目沒有把握好,首先我測了下』a』和』a』的unicode值,為了能使z加1變成a,需要經過一些計算,先把乙個字母減掉初始值,如果是大寫的減a的值,然後加要移動的值,再加26,然後對26取餘,得出來的餘數再加初始值就得到最終字母的unicode了,然後再轉換為字母即可,這裡有個注意的地方,大寫對應初始是a,小寫對應初始是a。
def
rotate_word
(word,num)
: new_word=
''for letter in word:
if letter.isupper():
start=
ord(
'a')
#ord函式將字母轉換為unicode點的整數
elif letter.islower():
start=
ord(
'a')
#chr函式將數值編碼轉換為字元
new_word=new_word+
(chr((
ord(letter)
-start+num+26)
%26+start)
)return new_word
rotate_word(
'melon',-
10)
我這有個不好的毛病就是習慣把一系列運算寫到一行,拆解一下或許更容易看
下面是答案的**
import string
defrotate_letter
(letter, n)
:"""rotates a letter by n places. does not change other chars.
letter: single-letter string
n: int
returns: single-letter string
"""if letter.isupper():
start =
ord(
'a')
elif letter.islower():
start =
ord(
'a')
else
:return letter
c =ord(letter)
- start
i =(c + n)%26
+ start
return
chr(i)
defrotate_word
(word, n)
:"""rotates a word by n places.
word: string
n: integer
returns: string
"""res =
''for letter in word:
res += rotate_letter(letter, n)
return res
if __name__ ==
'__main__'
:print
(rotate_word(
'cheer',7
))
答案用了兩個函式,而且都寫好了文件字串,顯得比較容易讀,以後也應該學著寫文件字串。 Python自學筆記9 字串
1 字串就是字元的串,hello,word print hello,word hello,word print hello,word hello,word 可以看出單純的字串輸出,單引號和雙引號是一樣的。2 字串中有單引號或雙引號的,需要用另一種引號區分如。print i m a coder 或者p...
Python基礎4 字串
python字串是由數字 字母 下劃線組成的一串字元,我們可以使用引號來建立字串。如 str helloworld 在python中沒有char型別,單個字元也作為string使用 python的字串列表有2種取值順序 a.自左向右,預設索引從0開始,索引長度最長為字串長度 1 b.自右向左,預設索...
Python學習4 字串
1.python字串 python沒有字元,所有的都叫做字串,用單引號表示。2.python中字串,列表,元祖的相似性 1 訪問,都是用str i 來訪問第i 1個元素。2 切片,str i j 來擷取其中的一部分。3 拼接,若要向其中插入一部分,都要使用str i str2 str i 但是此過程...