首页 > 编程语言 >【Python】反转数字(整数、百分数、小数、分数)

【Python】反转数字(整数、百分数、小数、分数)

时间:2024-03-31 18:31:35浏览次数:30  
标签:tem 百分数 Python 反转 else num str print 小数

(本人蒟蒻,dalao勿喷)需要代码往下翻,最后的代码最简洁喔~

题设:

'''给定一个数,请将该数各个位上数字反转得到一个新数。
整数反转是将所有数位对调。
小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分。
分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母。
百分数的分子一定是整数,百分数只改变数字部分。'''

首先我们可以想到,整数反转的方法:

①利用数学方式取商取模获得数字,然后进行反转;

②将数字转化成字符串,利用列表逆向后,再输出字符串。

显然在题设这种未知位数的情况下,方法①需要使用递归还有分支循环,方法②就显得简便许多。

于是,我们按照整数反转的方法②来写:(当然,对于分数小数,我们需要使用两个列表将其分割开,对于百分数需要使用pop来去掉百分号)

num=list(input())
if num[-1]=='%':
    num.pop()
    percent=''.join(num[::-1]+list('%'))
    per=percent.lstrip('0')
    if per=='%':
        print(percent)
    else:
        print(per)
elif '/' in num:
    sym_location = num.index('/')
    tem_num = num[:sym_location]
    tem_num0 = num[sym_location + 1:]
    fenzi=''.join(tem_num[::-1])
    zi=str(fenzi).lstrip('0')
    fenmu=''.join(tem_num0[::-1])
    mu=str(fenmu).lstrip('0')
    if zi=='':
        if mu=='':
            print(fenzi+'/'+fenmu)
        else:
            print(fenzi+'/'+mu)
    else:
        if mu=='':
            print(zi+'/'+fenmu)
        else:
            print(zi+'/'+mu)
elif '.' in num:
    sym_location = num.index('.')
    tem_num = num[:sym_location]
    tem_num0 = num[sym_location + 1:]
    zhengshu = ''.join(tem_num[::-1])
    z = str(zhengshu).lstrip('0')
    xiaoshu = ''.join(tem_num0[::-1])
    x = str(xiaoshu).rstrip('0')
    if z == '':
        if x=='':
            print(zhengshu+'.'+xiaoshu)
        else:
            print(zhengshu+ '.' + x)
    else:
        if x=='':
            print(z+'.'+xiaoshu)
        else:
            print(z+'.'+x)

else:
    z1=str(''.join(num[::-1]))
    z=z1.lstrip('0')
    if z=='':
        print(z1)
    else:
        print(z)

我们获得的代码如上。

细心的朋友很可能好奇,为什么我嵌套了好几层循环。没错,因为在上述代码中,我们使用了strip来去除整数字符串前面和后面的“0”,但是我们还需要使得输入类似于“00%”"000.000""000/000""000"这些情况能够输出(如果没有这些循环,我们获得的会是"%"".""/""",感兴趣的友友可以自己去试一试)

strip固然是一种很棒的想法,但是!让我们仔细思考,我们是否可以使用str和int的转化来使得代码更简洁呢?

如果你能想到这里,那你真的超级超级棒啊!!!

来看看代码吧:

s = input()
if '.' in s:
    dot = s.find(".")
    print(int(s[dot-1::-1]),end="")
    print('.',end="")
    for i in s[dot:]:
        if i !=0: 
            print(str(int(s[dot+1:]))[::-1])
            break
        else:
            print("0")
elif "%" in s:
    print(int(s[-2::-1]),"%",sep = "")
elif "/" in s:
    chu = s.find('/')
    print(int(s[chu-1::-1]),end="")
    print('/',end="")
    print(int(s[:chu:-1]))
else:
    print(int(s[::-1]))

是不是非常简洁呢?

好啦,今天的分享就到这里啦,Zephyr会持续发布笔记的,希望大佬指教吖!

标签:tem,百分数,Python,反转,else,num,str,print,小数
From: https://blog.csdn.net/m0_59287434/article/details/137205319

相关文章

  • python(django)之单一接口管理功能后台开发
    1、创建数据模型在apitest/models.py下加入以下代码classApis(models.Model):Product=models.ForeignKey('product.Product',on_delete=models.CASCADE,null=True)#关联产品IDapiname=models.CharField('接口名称',max_length=100)apiurl=mod......
  • 涛哥聊Python | auto-sklearn,一个非常好用的 Python 库!
    本文来源公众号“涛哥聊Python”,仅用于学术分享,侵权删,干货满满。原文链接:auto-sklearn,一个非常好用的Python库!大家好,今天为大家分享一个非常好用的Python库-auto-sklearn。Github地址:https://github.com/automl/auto-sklearn随着机器学习技术的快速发展,越来越多的组......
  • python --图(树)的存储
    在蓝桥杯竞赛中,常见的图存储方式包括邻接矩阵、邻接表、链式前向星等。这些存储方式在不同的场景下有着各自的优势和适用性。邻接矩阵邻接矩阵是最常见的图的表示方法之一。对于一个有$n$个顶点的图,可以用一个$n\timesn$的二维数组来表示。如果图中存在从顶点$i$到顶点$j$的边......
  • 从安装python开始教你利用python将excel中的数据导出到txt文件中,并且有如何安装python
    制作方法想到制作这个程序的原因开始写程序前的准备工作安装python第一步:下载python第二步:运行python安装包测试python用python输出你好python安装python库开始编写程序编写前的准备开始编写想到制作这个程序的原因工作的时候,领导说让把表格里的数据导出到txt文......
  • python 实例属性、类属性、实例方法、类方法、静态方法
    classPeople():peoCount=0#类属性def__init__(self,name,age):#实例属性self.__name=nameself.__age=agePeople.peoCount+=1defgetProperty(self):#定义实例方法returnself.__dict__@cla......
  • 用python3.9写文字转视频
    Windows系统,python3.9,根据一段文字生成一段视频,并添加背景音乐1,安装moviepy库,安装ImageMagickpipinstallmoviepy下载ImageMagick,配置环境变量IMAGE_HOME为ImageMagic的安装目录,并修改python的moviepy配置文件\Python39\Lib\site-packages\moviepy\config_defaults.py:IMAGEM......
  • 如何系统学习python
    目录一系统学习第一步:设定学习目标与规划第二步:基础知识学习第三步:实践与项目经验积累第四步:深入特定领域第五步:持续学习与提升二Python语言的优缺点Python语言的优点:Python语言的缺点:一系统学习系统学习Python编程语言是一个循序渐进的过程,涉及基础知识的学......
  • Python 基础知识
    一、Python背景介绍Python创始人:吉多.范罗苏姆。ABC语言的一种继承,C和Shell之间功能全面、易学易用可拓展的语言二、Python涉及领域可用于WEB开发、网络编程、爬虫、云计算、人工只能、自动化运维、金融分析、科学运算和游戏开发等三、Python应用公司谷歌、豆瓣、知乎、......
  • 【Python】【完整代码】张万森,下雪了,我想你~
    目录1.实现效果2.完整代码3.代码分析         有人说,张万森下雪了的意思是我想你了;也有人说,张万森下雪了就是表达一个男孩对于暗恋女孩的感受。而我觉得“张万森下雪了”是一个含蓄的告白,小伙伴们觉得呢~本篇文章将用python画出“张万森,下雪了”,欢迎围观!......
  • Python面向对象多态实现原理及代码实例
    Python面向对象编程中的多态性表示的是同一种操作可以在不同的对象上有不同的表现。多态性指的是可以无视对象的具体类型,而直接调用某个方法,这个方法会根据对象的实际类型而进行不同的操作。这是通过继承和重写方法实现的。在Python中,任何类都有一个公共的祖先:object类。Python中......