以下は、リストが回文かどうかを確認するコードです。983 に対して正しい出力が得られます。どこが間違っているのでしょうか?
def palindrome(num):
flag=0
r=num[::-1]
for i in range (0, len(num)-1):
if(r[i]==num[i]):
flag=1
else:
flag=0
return flag
以下は、リストが回文かどうかを確認するコードです。983 に対して正しい出力が得られます。どこが間違っているのでしょうか?
def palindrome(num):
flag=0
r=num[::-1]
for i in range (0, len(num)-1):
if(r[i]==num[i]):
flag=1
else:
flag=0
return flag
不一致が発生したらすぐに戻る必要があります。また、半分の長さまで繰り返す必要があります。
def function(...):
...
for i in range (0, (len(num) + 1) / 2):
if r[i] != num[i]:
return False
return True
ところで、そのループは必要ありません。あなたは簡単に行うことができます:
def palindrome(num):
return num == num[::-1]
これは簡単です:
def palindrome(num):
if num[::-1] == num:
return True
else:
return False
不一致for
が見つかったかどうかに関係なく、ループはすべての文字のペアをチェックします。したがって、文字列 '38113' の場合、変数は'38113' の最後の桁とその反転バージョン '31183' が等しいかどうかをチェックした後にに設定されるTrue
ため、が返されます (両方とも 3 に等しいが、文字列はそうではありません)。回文)。したがって、不一致を見つけたらすぐ
に戻る必要があります。すべての文字をチェックしても見つからなかった場合は、次のよう に戻ります。flag
True
False
True
def palindrome(num):
r = num[::-1]
for i in range (0, len(num)-1):
if(r[i] != num[i]):
return False
return True
また、誰かが指摘したように、python のスライスを使用する方が良いでしょう -ドキュメントをチェックしてください。