栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python

前言:今天我和爸爸刷卷,一向顺风顺水的我突然嘎嘣了一下。思路完全没问题,但就是写不出来。一写就报错、一写又报错。但我还是硬着头皮毫不气馁地加油干,完成了此次艰难的任务(心虚了)

正文:要想完成这个程序,我们首先得来了解一下什么叫回文数。所谓回文数,就是像1111、12321、857758这样的数。这种数无论正着看还是反着看都一样。额,我说的是横向的反,不是竖向的反,请不要歪着脑袋看。简单来说就是对称

这次的要求就是用户输入一个正整数 M(2

思路:我们可以先想想思路,可以先创建一个列表。保存着所有的用户要求的几位数,然后再遍历,满足条件便在计数器上加一。

程序:下面我们来看一下我的方法:

xxx=int (input())  # 输入位数
a=int('1'+(xxx-1)*'0')  # xxx位的第一个数
b=int('1'+xxx*'0')  # xxx位再多一位的数
s=0  # 几个回文数
x=0  # 几个有99的
num=[str(i) for i in range(a,b)]  # 所有xxx位的数
for i in num:  # 每个都去遍历
    if int(i)==int(i[::-1]):  # 判断是否为回文数(用到了切片,使其倒置)
        s+=1
        if '99' in i:  # 判断是否包含99
            x+=1
print(s)
print(x)

尾声:本期就到这里了,拜托各位一件事(可以不完成)

我爸爸也做了这个程序,但他用了别的方法,没有成功。挑不出来错,但程序就是不执行。希望大家能看看哪里错了:(我感觉死啦麻烦,希望大家能坚持看到最后)

M=int(input())
N=M//2  # 奇数个位数的中间位置
O=M//2  # 偶数位的


# 创建一个能根据输入的M 生成M位数的两端边界值a,b的函数
def shu(n):
    a=10**(n-1)
    b=eval('9'*n)
    return a,b


sum=0  # 用来统计回文数个数
sum99=0 # 用来统计含有‘99’的回文数个数

a,b=shu(M)  # 生成M位数的最小值和最大值
for i in range(a,b+1):  # 遍历所有的M位的整数
    i = str(i)    # 变成字符串 便于后面的切片
    if M % 2 != 0:  # 处理奇数个数位的回文数
        # 从字符串中间切开 看看前一半是否和后一半翻转过来的相同
        if i[:N-1]==i[N+1::-1]:
            sum+=1
            print('回文数%s' %i)
            if "99" in i:
                sum99+=1
        else:
            continue   # 不相同的就跳出本轮
    else:   # 处理偶数个数位的回文数
        if i[:O-1] == i[O::-1]:
            sum += 1
            if "99" in i:
                sum99 += 1
print(sum)
print(sum99)


再次拜托大家了,谢谢谢谢(卑微)。再见!希望大家每一天都是美好的!

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/755247.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号