"""
求不同位数的回文数的个数。
用户输入一个正整数M(2<M<7),M作为回文数的位数,要求输出M位的回文数共有几个及这些回文数中有几个包含数字99。
输入描述
输入一个正整数M
输出描述
第一行输出回文数的个数
第二行输出M位的回文数中包含数字99的有几个
"""
import math
def check_all_ct():
min = 2
max = 7
print(f'请输入不小于{min}且不大于{max}的一个整数')
legality = False
input_value = int(-1)
while input_value <= min or input_value >= max:
input_value = int(input())
if input_value <= min or input_value >= max:
if input_value == -1:
print('程序退出')
return
print(f'{input_value}输入不合法')
print(f'输入的数据是{input_value}')
# 检测值的边界
max_value = 10 ** input_value -1
min_value = 10 ** (input_value -1)
print(min_value, max_value)
# 需要检测的数据的数组
palindromic_ct = 0
focus_ct = 0
focus_value = '99'
# 遍历符合位数的整数
for n in range(min_value, max_value +1):
check_str = str(n)
# 前半部分
left_str = check_str[0 : math.ceil(input_value/2)]
# 后半部分反转
right_str = check_str[math.floor(input_value/2):][::-1]
# 首先判定是不是回文
if left_str == right_str:
palindromic_ct +=1
# find 语法 找到了 返回的是第一个符合的索引 没有找到返回的是-1
if check_str.find(focus_value) != -1:
focus_ct +=1
#print('第{}个找到的是{}'.format(focus_ct,check_str))
# print(check_str, left_str, right_str)
print(palindromic_ct, focus_ct)
check_all_ct()
Python回文判定的实现
最新推荐文章于 2024-05-11 05:21:58 发布