数字反转(升级版)
给定一个数,请将该数各个位上数字反转得到一个新数。
这次与 NOIp2011 普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。整数反转是将所有数位对调;小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分;分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母;百分数的分子一定是整数,百分数只改变数字部分。整数新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零;小数新数的末尾不为 0(除非小数部分除了 0 没有别的数,那么只保留1个 0);分数不约分,分子和分母都不是小数(约分滴童鞋抱歉了,不能过哦。输入数据保证分母不为 0),本次没有负数。
题目描述
给定一个数,请将该数各个位上数字反转得到一个新数。
这次与 NOIp2011 普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。
-
整数反转是将所有数位对调。
-
小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分。
-
分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母。
-
百分数的分子一定是整数,百分数只改变数字部分。
输入格式
一个实数 s
输出格式
一个实数,即 s 的反转数
代码:
s = input()
def fun1(x):
return str(int(x[::-1]))
def fun2(x):
n = x.find('.')
a = x[n-1::-1]
b = x[n+1:]
# print('a=',a)
# print('b=',b)
b = str(int(b))
return str(int(a))+'.'+b[::-1]
def fun3(x):
n = x.find('/')
a = x[n-1::-1]
b = x[:n:-1]
# print('a=',a)
# print('b=',b)
b = str(int(b))
return str(int(a))+'/'+b
def fun4(x):
x = x[0:len(x)-1]
return str(int(x[::-1])) + '%'
if '.' in s:
print(fun2(s))
elif '/' in s:
print(fun3(s))
elif '%' in s:
print(fun4(s))
else:
print(fun1(s))