gpt4 book ai didi

python - 这个用于其他字母函数的 Python 代码有什么问题?

转载 作者:行者123 更新时间:2023-12-05 09:25:52 24 4
gpt4 key购买 nike

我正在尝试编写一个函数来提取任何给定单词的每隔一个字母。有人可以解释一下为什么这段代码不产生每隔一个字母吗?

def other_letter(word):
other_letter = ""
for letter in word:
if word.index(letter) % 2 == 0:
other_letter += letter
return other_letter

print(other_letter("Hello World!"))

我认为如果任何索引的模等于 0 那么它应该每隔一个字母提取并将其添加到 other_letter 中?我找到了另一种方法来解决这个问题,没有模运算符,但我想知道为什么模运算符在这里不起作用?

最佳答案

您面临的问题是,在您的代码中,您正在检查单词中字母的索引。这意味着它会找到字母的第一个 实例,而不是当前 实例。

"l" 总是索引 2"o" 总是索引 4,所以所有的 l 和 o将出现在您的结果字符串中,而不仅仅是第一个 "l" 和第一个 "o"

要在跟踪索引的同时迭代 Iterable,您可以使用 enumerate 生成索引、值对的 Iterable。但在这种情况下,它仍然不是最简洁的解决方案。

一个更简单的解决方案是对括号运算符使用 skip 参数。

在包含字符串的序列上使用[]时,第一个参数是开始索引,第二个是结束索引(最后一个元素之后的一个),第三个是跳过量.

如果您省略了开始和结束索引,您只需遍历整个字符串,您仍然可以应用 skip 参数来跳过一定数量的字母。

def other_letter(word: str):
"""Return a string of every other letter in word."""
return word[::2]

例子:

>>> word = "Hello World!"
>>> print(word[::2])
'HloWrd'

如果想从第二个字母开始,可以将起始索引设为1而不是默认的0:

>>> print(word[1::2])
'el ol!'

关于python - 这个用于其他字母函数的 Python 代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74935966/

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