Python编写案例:判断是否为回文数
发布时间:2023-12-04 15:25:45
编写一个Python函数,判断一个整数是否为回文数。
回文数是指正序(从左向右)和倒序(从右向左)读都是相同的整数。例如,121是回文数,而123不是回文数。
下面是一个简单的实现该功能的例子:
def is_palindrome(num):
# 将整数转换为字符串
num_str = str(num)
# 如果字符串与其翻转后的字符串相同,则是回文数
if num_str == num_str[::-1]:
return True
return False
我们可以使用该函数来判断一个整数是否为回文数。例如:
num = 121
if is_palindrome(num):
print(f"{num}是回文数")
else:
print(f"{num}不是回文数")
输出结果为:
121是回文数
对于输入的整数123,输出结果为:
123不是回文数
上述代码中,我们首先使用str()函数将整数转为字符串,然后使用字符串切片[::-1]获取字符串的翻转形式。如果翻转后的字符串与原字符串相同,则返回True,表示是回文数;否则返回False,表示不是回文数。
这是一个简单的方法,但并不高效。可以使用更高效的方法进行判断。一种常见的方法是通过取整和取余操作,将整数分为前半部分和后半部分,然后将后半部分反转,最后与前半部分进行比较。如果相同,则是回文数。以下是使用该方法的实现:
def is_palindrome(num):
# 特殊情况:对于负数和个位数为0的非零数,不是回文数
if num < 0 or (num % 10 == 0 and num != 0):
return False
# 反转后半部分
reverse_num = 0
while num > reverse_num:
reverse_num = reverse_num * 10 + num % 10
num //= 10
# 当数字长度为奇数时,可以通过reverse_num // 10去除中位数
# 例如,12321,循环结束时,reverse_num=123,num=12
# 当数字长度为偶数时,此时num和reverse_num长度相同
return num == reverse_num or num == reverse_num // 10
使用该方法判断整数是否为回文数的效率更高。例如:
num = 121
if is_palindrome(num):
print(f"{num}是回文数")
else:
print(f"{num}不是回文数")
输出结果仍然为:
121是回文数
这种方法避免了将整数转为字符串的开销,通过直接操作整数来判断是否为回文数。
