判断一个五位数是不是一个回文数的九种方法

判断一个五位数是不是一个回文数的九种方法

目前之总结出九种判断一个五位数是否是回文数的方法,还在继续研究新方法,后面会继续持续更新,欢迎留言讨论
# 方法一:直接通过索引取个位和万位,十位和千位判断
def two_question01():
    print("第二题运行结果:")
    while True:
        num=input('请输入一个五位数:')
        pattern1 = re.search("([0-9]{5})", num)
        if pattern1 and len(num)==5:
            if num[0] == num[-1] and num[1] == num[-2] and num[0] != '0':
                print('这是一个回文数!')
            else:
                print('这不是一个回文数。')
            break
        else:
            pass


two_question01()

# 方法二:通过反向切片的方法直接判断输入内容与反切结果是否相等来判断
def two_question02():
    print("第二题运行结果:")
    while True:
        num=input('请输入一个五位数:')
        pattern1 = re.search("([0-9]{5})", num)
        if pattern1 and len(num) == 5:
            if num == num[::-1] and num[0] != '0':
                print('这是一个回文数!')
            else:
                print('这不是一个回文数。')
            break
        else:
            pass

# two_question02()

# 方法三:通过数学运算取个位和万位,十位和千位进行判断
def two_question03():
    print("第二题运行结果:")
    while True:
        num1 = input('请输入一个五位数:')
        pattern1 = re.search("([0-9]{5})", num1)
        if pattern1 and len(num1) == 5:
            num = int(num1)
            if (num//10000 == num % 10
                    and (num//1000) % 10 == (num % 100)//10
                    and num1[0] != '0'):
                print('这是一个回文数!')
            else:
                print('这不是一个回文数。')
            break
        else:
            pass

# two_question03()

# 方法四:利用列表的反序方法,将输入的内容转换为列表,在进行反序,比较前后是否相等
def two_question04():
    print("第二题运行结果:")
    while True:
        num=input('请输入一个五位数:')
        pattern1 = re.search("([0-9]{5})", num)
        if pattern1 and len(num) == 5:
            li=list(num)
            if li == list(reversed(num)) and num[0] != '0':
                print('这是一个回文数!')
            else:
                print('这不是一个回文数。')
            break
        else:
            pass

# two_question04()

# 方法五:利用列表的正向切片和反向切片,对对称位进行比较判断
def two_question05():
    print("第二题运行结果:")
    while True:
        num = input('请输入一个五位数:')
        pattern1 = re.search("([0-9]{5})", num)
        if pattern1 and len(num) == 5:
            li=list(num)
            if li[0:2] == li[-1:-3:-1] and num[0] != '0':
                print('这是一个回文数!')
            else:
                print('这不是一个回文数。')
            break
        else:
            pass

# two_question05()

# 方法六:利用切片方法配合集合进行判断,将输入的内容对称位切出来,
# 在转换成集合,利用集合特性进行判断
def two_question06():
    print("第二题运行结果:")
    while True:
        num = input('请输入一个五位数:')
        pattern1 = re.search("([0-9]{5})", num)
        if pattern1 and len(num) == 5:
            if (len(set(num[::4])) < 2
                    and len(set(num[1:4:2])) < 2
                    and num[0] != '0'):
                print('这是一个回文数!')
            else:
                print('这不是一个回文数。')
            break
        else:
            pass

# two_question06()

# 方法七:利用for循环配合集合去重进行判断,将输入的内容转换成集合,
# 在转换成集合,利用集合特性进行判断
def two_question07():
    print("第二题运行结果:")
    while True:
        num = input('请输入一个五位数:')
        pattern1 = re.search("([0-9]{5})", num)
        if pattern1 and len(num) == 5:
            s = set()
            s1 = set()
            for id in range(1,6):
                if id == 3:
                    continue
                elif id == 1 or id == 5:
                    s.add(num[id - 1])
                elif id == 2 or id == 4:
                  s1.add(num[id-1])
            if (len(s) <2
                    and len(s1) <2
                    and num[0] != '0'):
                print('这是一个回文数!')
            else:
                print('这不是一个回文数。')
            break
        else:
            pass

# two_question07()

# 方法八:利用切片方法配合字典进行判断,将输入的内容对称位切出来,
# 在转换成存进字典,利用字典key值唯一的特性进行判断
def two_question08():
    print("第二题运行结果:")
    while True:
        num = input('请输入一个五位数:')
        pattern1 = re.search("([0-9]{5})", num)
        if pattern1 and len(num) == 5:
            d = {}
            d.update({num[0]:num[0],num[-1]:num[-1]})
            d1 = {}
            d1.update({num[1]:num[1],num[-2]:num[-2]})
            if len(d) < 2 and len(d1) < 2 and num[0] != '0':
                print('这是一个回文数!')
            else:
                print('这不是一个回文数。')
            break
        else:
            pass

# two_question08()

# 方法九:利用切片方法配合字典进行判断,将输入的内容对称位切出来,
# 在转换成存进字典,利用字典key值唯一的特性进行判断,
# 本方法利用了字典的fromkeys()方法
def two_question09():
    print("第二题运行结果:")
    while True:
        num = input('请输入一个五位数:')
        pattern1 = re.search("([0-9]{5})", num)
        if pattern1 and len(num) == 5:
            li = [num[0],  num[-1]]
            li1 = [num[1], num[-2]]
            d = {}
            d1 = {}
            d = d.fromkeys(li)
            d1 = d1.fromkeys(li1)
            if len(d) < 2 and len(d1)<2 and num[0] != '0':
                print('这是一个回文数!')
            else:
                print('这不是一个回文数。')
            break
        else:
            pass

# two_question09()
  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值