gpt4 book ai didi

Python:回文(字符串索引超出范围)

转载 作者:行者123 更新时间:2023-11-28 20:23:29 26 4
gpt4 key购买 nike

我试着写了一个叫做 is_palidrome_v3(s) 的方法来比较单词的第一个和最后一个字母,然后是第二个和最后一个第二个字母,直到这对不一样,最后检查索引是否 >= len(s )//2

def is_palidrome_v3(s):
''' (str) -> bool

Return True if and only if s is a palidrome.

>>> is_palidrome_v3('noon')
True
>>> is_palidrome_v3('racecar')
True
>>> is_palidrome_v3('dented')
False
'''

i = 0
while i <= len(s) // 2 and s[i] == s[len(s) - i]:
i = i + 1

return i >= len(s)//2

但是当我运行它时:

is_palidrome_v3('noon')

有一个错误:

Traceback (most recent call last): 
File "<pyshell#0>", line 1, in <module> is_palidrome_v3('noon')
File "C:\Users\James\Google-h0925473\Learning Programming\Python\Python Fundamental (Coursera)\is_palidrome_v1.py", line 67, in is_palidrome_v3 while i <= len(s) // 2 and s[i] == s[len(s) - i]:
IndexError: string index out of range

有人能告诉我里面有什么问题吗?

谢谢!!!

最佳答案

对于您的代码,

线路:

while i<=len(s)//2 and s[i] == s[len(s)-i] 

是问题所在。在第一次迭代时,条件是:

while 0<=len(s)//2 and s[0] == s[len(s)]

并且索引 len(s) 不可能存在于字符串中。因此错误。将其更改为:

while i<len(s)//2 and s[0] == s[len(s)-i-1]:

这样问题就解决了

为什么要这么大惊小怪?

以这种很酷的方式结帐:

if s == s[::-1]:
return True
return False

s[::-1] 第一个 : 表示我们必须从头开始迭代。第二个 : 说迭代到最后。所以,:: 通常意味着我们必须遍历整个字符串。最后的 -1 表示必须从右侧(反向)解释字符串。所以我们检查字符串是否等于它的反转

关于Python:回文(字符串索引超出范围),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20396956/

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