您的代码
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