STEMA Python 程序设计组模拟中级15练习试卷第五题(回文数以及判断回文数中是否存在某个数字)

【编程实现】
回文数是指一个像 14641 这样“对称”的数,即:将这个数的各位数字按相
反的顺序重新排列后,所得到的数和原来的数一样。请编程求不同位数数字
的回文数的个数。用户输入一个正整数 M(2<M<7),M 作为回文数的位
数。要求输出 M 位的回文数共有几个及这些回文数中有几个包含数字 99。
输入描述:输入一个正整数 M
输出描述:第一行输出回文数的个数;第二行输出 M 位的回文数中包含数字
99 的有几个。
【样例输入】
3
【样例输出】
90
1

解题思路:
1、明确在要求范围内统计回文数的个数,用了for循环解决(10**(M-1),10**M)
2、分解数字的方法得到数值中每个位数字。
3、如何判断回文数,分解出来的数字与原本数值是倒置,所以只需要重复组合一起在判断是否相等
4、判断回文数里有99个数,所以我这里采用列表去解决。

M=int(input())
c=0
d=0
for i in range(10**(M-1),10**M):
    a=[]##1、建议列表 2、每次重复执行过后清空列表
    b=0
    m=i
    while m>0:##数值从后面分解数字到数组中
        a.append(m%10)
        m//=10
    for j in range(len(a)):##把分解好的数字重新组合起来,这里要注意分解是是从后往前的。
        b=a[j]*(10**(len(a)-1-j))+b
    if b==i:##判断是否回文数。
        c+=1
        for j in range(len(a)-1):
            if a[j]*10+a[j+1]==99:##判断是否有99出现。
                d+=1
                break##题目只说有没有99这个出现,并没有统计说一个数值里有几个99,所以到找到一个时,就跳出~
print(c)
print(d)

假设本题去掉这些回文数中有几个包含数字 99,我采用while循环直接解决~

M=int(input())
b=0
for i in range(10**(M-1),10**M):
    m=i
    j = 1
    N=0
    while m>0:
        n=m%10
        m//=10
        N=n*10**(M-j)+N##把分解好的数字重新组合起来,这里要注意分解是是从后往前的。
        j+=1
    if N==i:
       b+=1
print(b)

这里比较难的是N变量的变化,要理解它,假设数值是121,那么首先把1拆出来1100 第二次拆2出来210,第三次拆就是1了,然后累加起来就得想要的数字了~这里比较难变量的变化

或者也可以直接采用原本程序中的列表方式解决也是ok的

M=int(input())
c=0
for i in range(10**(M-1),10**M):
    a=[]##1、建议列表 2、每次重复执行过后清空列表
    b=0
    m=i
    while m>0:##数值从后面分解数字到数组中
        a.append(m%10)
        m//=10
    for j in range(len(a)):##把分解好的数字重新组合起来,这里要注意分解是是从后往前的。
        b=a[j]*(10**(len(a)-1-j))+b
    if b==i:##判断是否回文数。
        c+=1
print(c)
print(d)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ha___。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值