问题描述;
输入一个非 0 十进制整数(不允许前导0的存在,即不允许类似 0123 这样的输入),将其反转输出。
输入:一个非 0 十进制整数
输出:反转后的数字
分析:
非 0 十进制整数,包括正数,如:123、负数,如:-123。
特殊情况:当数字尾数为 0 时,例如:12300,反转后为00321,存在前导 0 ,不符合 10进制整数的定义,需将前导 0 处理掉,转为321。
数学方法:
1.输入一个整数字符串,将其转为整数,命名为 num
2.先判断输入是否为负数,当输入为负数时:
2.1 先输出一个负号“-”
2.2然后将该数转为对应的正数 abs(num) 或 num = -num
当该数不为 0 时,循环输出末位数字并去掉末位数字:
3.1 取该数末位数字(num % 10),判断是否为0:
3.1.1 若末位数不为 0 则输出,不换行,为 0 时不处理
3.2 将该数最后一位数字去掉 num = num // 10
参考实现代码如下:num = int(input()) # 将输入转为整数
if num < 0: # 如果 num 是负数
num = abs(num) # 返回其绝对值,去掉负号
print('-',end = '') # 先将负号输出,不换行
while num != 0: # num 不为0时循环取末位输出,并去掉末位数字
if num % 10 != 0: # num % 10 结果为num最后一位数字,不为0时输出该数字
print(num % 10,end = '') # 输出末位数字,不换行
num = num // 10 # num 整除10去除最后一位数字
字符串方法:
Python 中字符串的应用非常灵活,可以方便的将其逆序、索引、切片和拼接等,下面看如何用字符串的方法实现:
- 输入一个字符串,并将其反转得到逆序字符串 input()[-1::-1]
判断字符串末位是否为‘-’,当末位为‘-’号时:
2.1 将字符串切掉末位,去除前导 0(strip(‘0’)) ,切下来的末位字符拼接在字符串开头
输出去除前导 0 的字符串(strip(‘0’))
num = input()[::-1] # 将输入的字符串逆序
if num[-1] == '-': # 若逆序后末位为‘-’
num = num[-1] + num[:-1].strip('0') # 将末位‘-’切下来拼接在字符串开头,strip('0')可去除字符串开头的前导0
print(num.strip('0')) # 输出逆序的数字,当num为正数时,前导0还可能存在,必须用strip('0')消除
num = input()[::-1] # 将输入的字符串逆序
if num[-1] == '-': # 若逆序后末位为‘-’
print(-int(num[:-1])) # 将逆序的字符串转为整数,系统会自动消除前导0
else:
print(int(num)) # 输出逆序的数字
上述代码可以用条件运算表达式实现:
num = input()[::-1] # 将输入的字符串逆序
print(-int(num[:-1])) if num[-1] == '-' else print(int(num))