【发布时间】:2017-02-24 09:39:29
【问题描述】:
每当我尝试创建一个函数来更改字符串或列表然后返回它时,我一直注意到我遇到的问题。
我会用我刚刚写的代码给你一个例子:
def remove_exclamation(string):
string.split(' ')
for i in string:
i.split()
for char in i:
if char == '!':
del char
''.join(i)
' '.join(string)
return string
例如,我创建此代码以将字符串作为其参数,删除其中的任何感叹号,返回它改变了。输入和输出应该是这样的:
>>>remove_exclamation('This is an example!')
'This is an example'
但是我得到了这个:
>>>remove_exclamation('This is an example!')
'This is an example!'
该函数没有删除输出中的感叹号,也没有按照我今天的意图进行。
当我制作 for 循环、嵌套 for 循环等时,如何避免这种情况?
【问题讨论】:
-
您的两个输出都是相同的。但是您缺少的是将
string.split(',')重新绑定到string。你看,字符串在 python 中是不可变的。 -
既然有
str.replace,为什么还要经历这么多麻烦? -
你的一个问题是你正在做
i.split(),而你应该做i = i.split()。在您的代码中,结果永远不会分配给任何东西。 -
您的代码注定要失败,因为您从未分配任何操作的结果。此外,您的缩进已关闭,我不确定您是否知道
del char的作用。 -
是的,
list.join和str.split,——实际上是所有字符串方法——返回一个新值。他们不会就地修改数据。即使假设这是真的,您的代码逻辑也已关闭,但您应该从那里开始。
标签: python python-3.x for-loop return return-value