Python实现数字逆序

Python如何实现数字逆序,但不改变正负号,0出现在前面就省略,比如输入-5670,输出-765

def reverse_num(num):
    """不改变正负号,逆序输出"""
    result = ''
    num = str(num)
    if num[0] in ['+', '-']:
        result += num[0]
        num = num[1:]
    if num[-1] == '0':
        result += num[len(num) -2::-1]
      
    else:
        result += num[::-1]

    return eval(result)

print(reverse_num(-5670))
print(reverse_num(5670))
print(reverse_num(+5670))
print(reverse_num(+123))

有帮助的话,请点采纳该答案~

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7554040
  • 你也可以参考下这篇文章:Python软件设计基础 第五节-基于图像相似度比较实现视频分镜
  • 同时,你还可以查看手册:python- 定义扩展类型:已分类主题- 更多建议 中的内容
  • 除此之外, 这篇博客: python语言常用语法汇总中的 44 正则表达式分组功能实例 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    import re
    #匹配所有
    p = re.compile('...')
    #匹配三个字符
    p = re.compile('.(3)')
    print(p.match('bat'))
    
    p = re.compile('....-..-..')
    print(p.match('2018-05-10'))
    print(r'\nx\n')
    
    p = re.compile(r'(\d+)-(\d+)-(\d+)')
    print(p.match('2018-05-10').group(1))
    print(p.match('2018-05-10').group())
    print(p.match('2018-05-10').groups())
    year,month,day = p.match('2010-05-10').groups()
    print(year)
    print(month)
    print(day)
    

    结果:

    None
    <re.Match object; span=(0, 10), match='2018-05-10'>
    \nx\n
    2018
    2018-05-10
    ('2018', '05', '10')
    2010
    05
    10
    
    进程已结束,退出代码为 0
    
  • 您还可以看一下 CSDN讲师老师的6大项目快速掌握Python爬虫与反爬虫应用课程中的 常用反爬机制的应对和处理--58同城租房信息的反爬处理小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    解决方案:

    首先需要编写一个判断素数的函数isPrime:

    def isPrime(n):
        if n<=1:
            return False
        for i in range(2,int(n**0.5+1)):
            if n%i==0:
                return False
        return True
    

    其中先判断n是否小于等于1,如果是就不是素数,然后从2到sqrt(n)+1进行循环,如果n能被除以i整除,说明n不是素数,否则就是素数。

    接着编写一个逆序排列的函数reverseNumber:

    def reverseNumber(n):
        if n<0:
            return -reverseNumber(-n)
        str_n = str(n)
        i = 0
        j = len(str_n)-1
        while i<j and str_n[i]=='0':
            i+=1
        str_n = str_n[i:][::-1]
        return int(str_n)
    

    首先判断n是否是负数,如果是就先对其取绝对值再进行逆序排列,最后再加上符号即可。

    然后将n转换成字符串,用双指针分别从头和尾开始遍历,一旦头指针i指向的数字为0就继续往后移动,以此忽略前导零。然后再对去掉前导零的数字进行逆序排列并转换成整数返回即可。

    最后将以上两个函数集成到主程序中:

    N = int(input())
    
    def isPrime(n):
        if n<=1:
            return False
        for i in range(2,int(n**0.5+1)):
            if n%i==0:
                return False
        return True
    
    def reverseNumber(n):
        if n<0:
            return -reverseNumber(-n)
        str_n = str(n)
        i = 0
        j = len(str_n)-1
        while i<j and str_n[i]=='0':
            i+=1
        str_n = str_n[i:][::-1]
        return int(str_n)
    
    for n in range(1,N+1):
        if isPrime(n) and reverseNumber(n) == n:
            print(n)
    

    输入一个正整数N后,输出1到N中所有既是素数又是回文数的数,每行一个。

    思路总结:首先需要分别编写判断素数和逆序排列的函数,然后将两个函数集成到主程序中根据题目要求输出结果即可。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^