3 回答

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊
您的函數(shù)將檢查最后一個(gè)數(shù)字是否與列表中的其他數(shù)字不同。您想要的可能是:
def palindrome(listnum):
for j in range(0, len(listnum)):
t = len(listnum) - j - 1
if listnum[j] != listnum[t]:
return False
return True
assert palindrome([9,0,6,6,0,9])
assert palindrome("ABBA")
assert palindrome([])
assert palindrome("1")
assert palindrome([1.0, 2, 1])
assert not palindrome("lolz")
assert not palindrome([1,2,3])

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
這里的主要問(wèn)題是for循環(huán)的嵌套??磥?lái)您想以鎖步方式更新j和t,但是您從j = 0開(kāi)始,然后檢查t的所有值。然后j = 1,然后再次檢查t的所有值,依此類推。
除了嵌套循環(huán),您還可以使用循環(huán)計(jì)數(shù)器來(lái)跟蹤您要搜索的單詞的距離,然后從中計(jì)算出j和t。例如
for d in range(len(listnum)/2):
j = d
t = len(listnum) - d - 1
#letter equality check here, return if false
return True

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
這不是為什么您的代碼不起作用的答案,但是您可能想知道,有一種更簡(jiǎn)單的方法來(lái)確定一個(gè)單詞是否是回文。根據(jù)定義,回文是一個(gè)不能通過(guò)反轉(zhuǎn)而改變的詞。因此:
def is_palindrome(word):
return word == ''.join(reversed(word))
print is_palindrome('906609') # True
其中可能需要解釋的唯一部分是joining。這是必要的,因?yàn)閞eversed一個(gè)單詞一個(gè)字母一個(gè)字母地返回,因此您首先需要將它們重新組合在一起。
正如評(píng)論中指出的那樣,另一種書(shū)寫方式是word == word[::-1]。它的含義完全相同,但可以說(shuō)有點(diǎn)晦澀難懂。
添加回答
舉報(bào)