前言:今天我和爸爸刷卷,一向顺风顺水的我突然嘎嘣了一下。思路完全没问题,但就是写不出来。一写就报错、一写又报错。但我还是硬着头皮毫不气馁地加油干,完成了此次艰难的任务(心虚了)
正文:要想完成这个程序,我们首先得来了解一下什么叫回文数。所谓回文数,就是像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)
再次拜托大家了,谢谢谢谢(卑微)。再见!希望大家每一天都是美好的!



