(本人蒟蒻,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