Shinone+const 2022-10-25 20:25 采纳率: 92%
浏览 21
已结题

为什么if判断后还是出现回文数

我已经在if中限制回文数字不要输出了,可是还是输出了,我在我的pycharm测试了ishuiwen函数,结果181,191,151这些数它都能判断成功是回文数呀,应该没问题的呀.
问题:

img

img


我的代码:

import math
    #==================Begin=================================
    # 补充你的代码
def isprime(n):
    if n==1:
        return 0
    for i in range(2,int(math.sqrt(n))+1):
        if n%i == 0:
            return 0
    return 1

def ishuiwen(s):
    for i in range(len(s)):
        if s[i]!=s[(len(s)-i-1)]:
            return 0
    return 1

def upsidedown(n):
    result = 0
    while n>9:
        first = n%10
        result = result*10 +first
        n = int(n/10)
    result = result*10 + n
    return result


def reverse_prime(number):
    """接收一个正整数参数,找出并在同一行内输出所有小于number的反素数,每个数字后一个空格。
    反素数指某数i及其逆序数都是素数,但数i对应的字符串不是回文字符串。函数无返回值"""
    #======================Begin=================================
    for i in range(10,number):
        i_string = str(i)
        if isprime(i) and ~(ishuiwen(i_string)):
            if isprime(upsidedown(i)):
                print(i,end=' ')
           


    #========================End===============================


positive_int = int(input())         
reverse_prime(positive_int)     


结果:

img

  • 写回答

1条回答 默认 最新

  • Ko-walski 2022-10-25 20:50
    关注

    你的代码多此一举有点

    import math
    
    
    # ==================Begin=================================
    # 补充你的代码
    def isprime(n):
        if n == 1:
            return 0
        for i in range(2, int(math.sqrt(n)) + 1):
            if n % i == 0:
                return 0
        return 1
    
    
    def upsidedown(n):
        result = 0
        while n > 9:
            first = n % 10
            result = result * 10 + first
            n = int(n / 10)
        result = result * 10 + n
        return result
    
    
    def reverse_prime(number):
        """接收一个正整数参数,找出并在同一行内输出所有小于number的反素数,每个数字后一个空格。
        反素数指某数i及其逆序数都是素数,但数i对应的字符串不是回文字符串。函数无返回值"""
        # ======================Begin=================================
        for i in range(10, number+1):
            if isprime(i):
                if isprime(upsidedown(i)):
                    if str(i) != str(i)[::-1]:
                        print(i, end=' ')
    
        # ========================End===============================
    
    
    positive_int = int(input())
    reverse_prime(positive_int)     
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月4日
  • 已采纳回答 10月27日
  • 创建了问题 10月25日

悬赏问题

  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图