您的代碼
def splicing():
word = input("Please input a word")
for i in range(len(word)):
letter = word[i]
if letter == 'o':
word = letter[:i] + word[i] + letter[i+1:]
print(word)
讓我們來看看
letter = word[i]
if letter == 'o':
可以簡化爲
if word[i] == 'o':
現在,讓我們來看看你做了什麼,當你發現一個 'O'
使用
word = letter[:i] + word[i] + letter[i+1:]
你以前使用的letter
你有
word = word[i] + word[i] + word[i]
,這不是你想要的,首先是因爲你不把一個「e」你的話......
word = word[:i]+'e'+word[1+1:]
總結起來
def splicing():
word = input("Please input a word")
for i in range(len(word)):
if word[i] == 'o':
word = word[:i]+'e'+word[i+1:]
print(word)
上述過程我在當前級別適用,但效率不高,因爲您正在構建一次又一次被稱爲word
的字符串......它將字符串轉換爲可以在適當位置更改的數據結構,操作替代和轉換回一個字符串
>>> word = 'Popeye & Olive'
>>> l = [c for c in word]
>>> print(l)
['P', 'o', 'p', 'e', 'y', 'e', ' ', '&', ' ', 'O', 'l', 'i', 'v', 'e']
現在你可以應用修改,同時建立新的數據結構:
>>> l = ['e' if c == 'o' else c for c in word]
>>> print(l)
['P', 'e', 'p', 'e', 'y', 'e', ' ', '&', ' ', 'O', 'l', 'i', 'v', 'e']
這是非常具有可讀性,不是嗎?
現在let'g更進一步,改變它的資本「O」
>>> l = ['e' if c == 'o' else 'E' if c == 'O' else c for c in word]
這是一個有點複雜,但仍然可讀......
>>> print(l)
['P', 'e', 'p', 'e', 'y', 'e', ' ', '&', ' ', 'E', 'l', 'i', 'v', 'e']
但這並不是什麼我們想要,我們想要一個字符串!
爲此,Python提供了str.join()
方法---在這裏,我們想用空字符串""
>>> print("".join(l))
Pepeye & Elive
>>>
加盟l
元素如果我們想要把它放在一起
>>> word = "".join(['e' if c=='o' else 'E' if c=='O' else c for c in word])
>>> print(word)
Pepeye & Elive
>>>
'letter [:i] + word [i] + letter [i + 1:]'看起來像是在一封信的中間粘貼一個單詞,而不是反過來。 – 2014-12-03 21:20:48
'word = word [:i] +'e'+ word [i + 1:]' – 2014-12-03 21:22:34
您將獲得今日最少發言題的標題;-) – Alfe 2014-12-03 21:31:33