Python 回文数程序

使用 While 循环、函数、递归、列表、列表推导式和 lambda 表达式代码编写 Python 回文数程序。我们还打印了从 1 到 N 以及从 1 到 100 的回文数列表。任何数字,如果反转后保持不变,则可能是回文数。例如,131、959 和 45654,因为它们在反转后保持不变。

检查 Python 中回文数的通用程序方法是反转给定的数字。将原始值与反转值进行比较。如果它们完全匹配,那么它就是一个回文数。否则,它不是。

在 Python 编程语言中,有多种方法可以反转数字中的数字,包括迭代方法、函数和递归方法。在这些程序中,我们可以使用 Python 的 If Else 语句来比较原始数字与反转数字,并检查或识别回文数。请记住,通过将原始数字分配给临时值并反转临时值来保留原始数字。

使用 While 循环的 Python 回文数程序

此程序允许用户输入任何整数值。接下来,此程序代码使用 While 循环检查给定的数字是否是回文数。

# using While Loop
number = int(input("Please Enter any Value: "))

reverse = 0
temp = number

while(temp > 0):
    Reminder = temp % 10
    reverse = (reverse * 10) + Reminder
    temp = temp //10
 
print("Reverse of it is = %d" %reverse)

if(number == reverse):
    print("%d is a Palindrome" %number)
else:
    print("%d is Not" %number)
Python Palindrome Number Program using While loop

此回文程序代码中用户输入的数值为 Number = 191 and Reverse = 0
Temp = Number
Temp = 191

While 循环第一次迭代
Reminder = Temp %10
Reminder = 191 % 10 = 1

Reverse = Reverse *10 + Reminder => 0 * 10 + 1 = 1

Temp = Temp //10 = 191 /10
Temp = 19

第二次迭代:从第一次 While 循环迭代开始,数值已变为 Temp = 19 and Reverse = 1

Reminder = 19 % 10 = 9

Reverse = 1 * 10 + 9 = 19

Temp = 19 /10 = 1

第三次迭代:从程序的第二次迭代开始,Temp 的值为 1,Reverse 的值为 19

Reminder = 1 % 10 = 1

Reverse = 19 * 10 + 1 = 191

Temp = 1/10 = 0

此处 Num = 0。因此,Python while 循环条件失败。

if ( Number == Reverse ) – 条件检查用户输入的数字是否等于反转后的数字。如果此条件为 True,则为回文数。否则不是。

使用 for 循环检查回文数的 Python 程序

此程序与 while 循环相同。但是,for 循环通过将数字转换为字符串来迭代。

num = int(input("Enter any Value: "))
rev = 0
temp = num

for _ in range(len(str(num))):
    rem = num % 10
    rev = (rev * 10) + rem
    num //= 10
if temp == rev:
    print('Palindrome')
else:
    print("Not")
Palindrome Number Program using For loop

使用字符串切片的 Python 回文数程序

在此程序中,str(num) 将用户输入的数字转换为字符串,而 [::-1] 则切片或反转字符串。接下来,int(str(num)[::-1]) 将反转后的字符串转换为数字。

n = int(input("Enter any Value: "))
rev = int(str(n)[::-1])

if n == rev:
    print('Palindrome')
else:
    print("Not")
Enter any Value: 145541
Palindrome

或者,您可以比较字符串。首先,将数字转换为字符串,然后将其与反转后的字符串进行比较。

num = int(input("Enter any Value: "))

strNum = str(num)

if strNum == strNum[::-1]:
    print('Palindrome')
else:
    print("Not") 
Enter any Value: 1243
Not

Enter any Value: 19791
Palindrome

使用函数的 Python 回文数检查程序

在此程序中,我们定义了一个 isPalindrome 函数。在该函数内,我们使用了 while 循环。接下来,使用If Else 语句来检查实际相等反转。

# using Functions
def isPalindrome(val):
    inverse = 0
    
    while(val > 0):
        Remi = val % 10
        inverse = (inverse * 10) + Remi
        val = val // 10
    return inverse

val = int(input("Please Enter any Num: "))

rev = isPalindrome(val)
print("Inverse = %d" %rev)

if(val == rev):
    print("%d is a Palindrome" %val)
else:
    print("%d is not" %val)
Please Enter any Num: 1441
Inverse = 1441
1441 is a Palindrome

Please Enter any Num: 1202
Inverse = 2021
1202 is not

使用递归的 Python 回文数检查程序

在此程序代码中,我们使用递归函数概念检查给定的数字是否是回文数。

# using Recursive Functions
rev = 0
def isPalindrome(num):
    global rev
    
    if(num > 0):
        Reminder = num % 10
        rev = (rev * 10) + Reminder
        isPalindrome(num // 10)
    return rev


num = int(input("Please Enter any Num: "))

rev = isPalindrome(num)
print("Reverse = %d" %rev)

if(num == rev):
    print("%d is a Palindrome" %num)
else:
    print("%d is not" %num)
Palindrome Number Program using recursion

在此程序中,在递归函数声明的检查中,

integer_rev (Num//10) – 它有助于使用更新后的值递归调用函数。如果您遗漏此语句,它将在完成第一行后终止。例如,Num = 191,则输出为 1

让我们看看 If 条件。

if (num > 0) 检查它是否大于 0。对于递归函数,在使用函数递归之前放置一个条件非常重要。否则,我们将陷入无限执行(与无限循环相同)。

使用列表的 Python 回文数程序

此示例创建一个空列表。对于每次迭代,它会将最后一个数字附加到列表中。

num = int(input("Please Enter any Value: "))

numList = []
temp = num

while temp > 0:
    numList.append(temp % 10)
    temp //= 10

reverse = numList[::-1]

if num == reverse:
    print(num, " is a Palindrome.")
else:
    print(num, "is Not.")
Enter any Value: 19791
Palindrome

使用列表推导式的 Python 回文数程序

此程序使用列表推导式。

  1. str(num) – str() 函数将 num 整数转换为字符串。 
  2. [int(i) for i in str(num)] –列表推导式读取每个单独的数字并创建这些数字的列表。这里,int(i) 将每个字符转换回数字。
  3. digits[::-1] – 它使用切片技术反转列表。您也可以尝试列表反转函数。
  4. If 语句检查每个数字是否与其反转后的数字相等。
num = int(input("Enter any Num: "))

digits = [int(i) for i in str(num)]

if digits == digits[::-1]:
    print('Palindrome')
else:
    print("Not")

使用 lambda 函数的 Python 回文数检查程序

此代码使用 lambda 表达式和 str() 函数。

num = int(input("Enter any Value: "))

isPalindrome = lambda num: str(num) == str(num)[::-1]

if isPalindrome(num):
    print('Palindrome')
else:
    print("Not")