19

Pythonを使用して、整数を逆にし、それが回文であるかどうかを判別します。これが私の逆と回文の定義です。正しいロジックがありますか?

def reverse(num):
    s=len(num)
    newnum=[None]*length
    for i in num:
        s=s-1
        newnum[s]=i
        return newnum

def palindrome(num):
    a=str(num)
    l=len(z)/2
    if a[:1]==a[-1:][::-1]:
        b=True
    else:
        b=False

書くのに苦労していますdef main

4

13 に答える 13

56
def palindrome(num):
    return str(num) == str(num)[::-1]
于 2012-10-24T23:51:07.630 に答える
20

整数には len() がありません。

ある数値が回文であるかどうかのテストは、その数値がその逆数に等しいかどうかをテストするのと同じくらい簡単です (最大の効率が必要な場合は、文字列の両端から中央に到達するまで文字を比較できます)。

整数の逆数を見つけるには、難しい方法で行うことができます (mod % と整数除算 // を使用して各桁を見つけ、逆数を作成します)。

def reverse(num):
  rev = 0
  while num > 0:
    rev = (10*rev) + num%10
    num //= 10
  return rev

または簡単な方法 (数値を文字列に変換し、スライス表記を使用して文字列を逆にし、整数に戻す):

def reverse(num):
  return int(str(num)[::-1])
于 2012-10-24T23:55:07.977 に答える
0

このプログラムにはリストを使用しましたが、文字列でも機能します。

print('Enter Something')
a = list(input())
for i in range ((len(a)),0,-1):
   print (a[i-1],end='')
于 2016-01-18T00:27:46.110 に答える
0

このコードは int を String に変換し、文字列が回文かどうかをチェックします。利点は高速であることであり、欠点は int を String に変換することであり、それによって質問に対する完全な解決策が損なわれることです。

それも扱いnegative intます。

class Solution:
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        s = str(x)
        if x >=0 :
            if s == s[::-1]:
                return True
            else:
                return False
        else:
            return False
于 2018-04-16T20:55:23.120 に答える
-2

私はこれを自分で出そうとしています。

def number():

    n = int(input("Enter a number: "))
    return n

def reverse(n):


    total = ""
    while n > 0:
        a = n % 10

        n//= 10


        total+= str(a)

    return total


def palindrome (n):

    total = 0
    while n > 0:
        a = n % 10

        n//= 10


        total+= a

    if total == n:
        x = "This number has a palindrome"

    else:
        x = ""

    return x

n = number()
print (reverse(n))
print (palindrome(n))
于 2015-01-02T00:45:29.903 に答える