python回文数问题请教

输入一个正整数M,M作为回文数的位数。要输出M位的回文数共有几个及这些回文数中包含几个99。(回文数是一个数的各位数字按相反的顺序重新排列后得出的数和原数一样)

回文数可以参考这个:https://blog.csdn.net/jerbo/article/details/130556635
自己判断位数、包含几个99

可以参考下:

m = int(input())
count = 0
count_99 = 0
for i in range(10**(m - 1), 10**m):
    data_str = str(i)
    data_str1 = data_str[::-1]
    if data_str == data_str1:
        count += 1
        if str(i).find('99') != -1:
            count_99 += 1
print(f"{m}位的回文数共有{count}个,这些回文数中包含{count_99}个99。")

运行结果:

img

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7714219
  • 你也可以参考下这篇文章:python实现:在两行中分别输入一个正整数M,N,输出这两个数的最大公约数和最小公倍数
  • 除此之外, 这篇博客: python 基础 之 re正则表达式的知识点整理,并简单使用说明中的 4、示例4:{m} 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • # 需求:匹配出,8到20位的密码,可以是大小写英文字母、数字、下划线
    
    #coding=utf-8
    import re
    
    ret = re.match("[a-zA-Z0-9_]{6}","12a3g45678")
    print(ret.group())
    
    ret = re.match("[a-zA-Z0-9_]{8,20}","1ad12f23s34455ff66")
    print(ret.group())
    
    
    运行结果:
    12a3g4
    1ad12f23s34455ff66

     

  • 以下回答由chatgpt基于相关博客总结生成:

    给定位数的回文数的数量指的是在指定位数的数中,有多少个数是回文数。而回文数是指一个数的各位数字按相反的顺序重新排列后得到的数和原数相同。

    以下是解决该问题的具体步骤及代码实现:

    1. 首先,我们需要明确回文数的定义。回文数是指一个数的各位数字按相反的顺序重新排列后得到的数和原数相同。既然是回文数,那么我们只需要检查一半的位数即可。

    2. 我们可以用一个循环来遍历指定位数范围内的数,然后判断每个数是否是回文数。

    3. 在判断一个数是否是回文数时,我们可以将该数转换为字符串,然后利用字符串的切片操作反转字符串。如果反转后的字符串和原字符串相同,则该数是回文数。

    4. 在每次判断完一个数是否是回文数时,我们可以统计回文数的数量,并同时判断该数是否包含99。

    下面是代码实现:

    def is_palindrome(n):
        # 判断一个数是否是回文数
        str_n = str(n)
        reverse_str = str_n[::-1]
        return str_n == reverse_str
    
    
    def count_palindromes(num_digits):
        # 统计给定位数范围内的回文数数量及包含99的数量
        count = 0
        count_99 = 0
        start_num = 10 ** (num_digits - 1)
        end_num = 10 ** num_digits
    
        for num in range(start_num, end_num):
            if is_palindrome(num):
                count += 1
                if '99' in str(num):
                    count_99 += 1
    
        return count, count_99
    
    
    # 调用函数计算给定位数范围内的回文数数量及包含99的数量
    num_digits = 3  # 指定位数
    palindrome_count, count_99 = count_palindromes(num_digits)
    
    # 输出结果
    print("给定位数范围内的回文数数量:", palindrome_count)
    print("包含99的回文数数量:", count_99)
    

    运行以上代码可以得到给定位数范围内的回文数数量和包含99的回文数数量。请根据需要修改num_digits来指定位数范围。