python实现判断回文数

输入一个数字(如果推出,按e或E)判断是否为回文数,如果是,返回这是一个回文数,如果不是,这不是一个回文数
回文数,前后数字一样称为回文数,比如,12321

while True:
    hui = input('请输入一个数或用e退出:')
    if hui in ['e','E']:
        break
    else:
        converStr = hui[::-1]
        if converStr == hui:
            print('这是一个回文数')
        else:
            print('这不是一个回文数')
            

在这里插入图片描述

### 回答1: 使用非递归函实现回文数判定: ```python def is_palindrome_iter(num): num_str = str(num) left = 0 right = len(num_str) - 1 while left < right: if num_str[left] != num_str[right]: return False left += 1 right -= 1 return True ``` 使用递归函实现回文数判定: ```python def is_palindrome_rec(num_str): if len(num_str) <= 1: return True elif num_str[0] != num_str[-1]: return False else: return is_palindrome_rec(num_str[1:-1]) ``` 注意:以上两个函都是针对整或者字符串实现回文数判定,如果输入不是整或者字符串,需要进行类型检查和转换。 ### 回答2: 非递归函实现回文数的判定方法: ```python def is_palindrome(num): str_num = str(num) length = len(str_num) for i in range(length//2): if str_num[i] != str_num[length-i-1]: return False return True num = input("请输入一个字:") if is_palindrome(num): print("是回文数") else: print("不是回文数") ``` 递归函实现回文数的判定方法: ```python def is_palindrome_recursive(num): str_num = str(num) length = len(str_num) if length <= 1: return True if str_num[0] != str_num[length-1]: return False return is_palindrome_recursive(str_num[1:length-1]) num = input("请输入一个字:") if is_palindrome_recursive(num): print("是回文数") else: print("不是回文数") ``` 以上两种方法都可以用来判断一个字是否是回文数。非递归方法通过比较字的首尾字符来判断是否是回文数,若有不相等的字符则返回False,遍历完全部字符后返回True。递归方法则通过每次对字去除首尾字符的方式来判断,若字长度小于等于1则返回True,若首尾字符不相等则返回False,否则递归调用判断去除首尾字符后的字。 ### 回答3: 使用非递归函判断回文的方法是首先将字转化为字符串,然后利用字符串的切片操作进行判断。具体步骤如下: 1. 将字转化为字符串:使用内置函`str()`将字转化为字符串类型。 2. 判断回文:将字符串进行切片操作,然后与原字符串进行逆序对比。 ```python def is_palindrome_nonrecursive(num): # 将字转化为字符串 num_str = str(num) # 利用切片操作判断回文 if num_str == num_str[::-1]: return True else: return False num = 12321 print(is_palindrome_nonrecursive(num)) ``` 使用递归函判断回文的方法是对比字的首位和末位是否相等,如果相等,则将去掉首位和末位的字作为新的输入,继续进行递归判断。具体步骤如下: 1. 定义递归函:传入两个参,表示字的首位和末位。 2. 实现递归判断:首先判断首位和末位是否相等,如果相等,则递归调用函,输入去掉首位和末位的字,否则返回False。 ```python def is_palindrome_recursive(num, first, last): # 首位和末位相等,进行递归 if first == last: # 判断是否到达最后一个字 if num < 10: return True else: # 去掉首位和末位的字,进行递归 new_num = (num - first - last) // 10 # 获取新字的首位和末位 new_first = new_num // 10**(len(str(new_num))-1) new_last = new_num % 10 return is_palindrome_recursive(new_num, new_first, new_last) else: return False num = 12321 first = num // 10**(len(str(num))-1) last = num % 10 print(is_palindrome_recursive(num, first, last)) ``` 这样就可以使用非递归函和递归函实现回文数的判定方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值