gpt4 book ai didi

python - 我在 for 循环和 return 语句中一直犯的一个错误

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:32 25 4
gpt4 key购买 nike

每当我尝试创建一个函数来更改字符串或列表然后返回它时,我一直注意到我遇到的一个问题。

我将通过我刚刚编写的代码向您举例说明这种情况:

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 循环等时,如何避免这种情况?

最佳答案

您编写代码并制定您的问题,就好像可以在 Python 中修改字符串一样。 这是不可能的。

字符串是不可变的。所有对字符串进行操作的函数都返回新字符串。它们不会修改现有字符串。

这将返回一个字符串列表,但您没有使用结果:

string.split(' ')

这也是:

i.split()

这将删除名为 char 的变量。它不影响字符本身:

        del char

这会创建一个您不使用的新字符串:

        ''.join(i)

这也是:

        ' '.join(string)

总而言之,几乎每一行代码都是错误的。

你可能想这样做:

def remove_exclamation(string):
words = string.split(' ')
rtn_words = []
for word in words:
word_without_exclamation = ''.join(ch for ch in word if ch != '!')
rtn_words.append(word_without_exclamation)
return ' '.join(rtn_words)

但最终,这会做同样的事情:

def remove_exclamation(string):
return string.replace('!', '')

关于python - 我在 for 循环和 return 语句中一直犯的一个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40051914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com