十进制整数如何翻转

问题描述;

输入一个非 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

  1. 当该数不为 0 时,循环输出末位数字并去掉末位数字:

3.1 取该数末位数字(num % 10),判断是否为0:

3.1.1 若末位数不为 0 则输出,不换行,为 0 时不处理

3.2 将该数最后一位数字去掉 num = num // 10

参考实现代码如下:

<code>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去除最后一位数字/<code>

字符串方法:

Python 中字符串的应用非常灵活,可以方便的将其逆序、索引、切片和拼接等,下面看如何用字符串的方法实现:

  1. 输入一个字符串,并将其反转得到逆序字符串 input()[-1::-1]
  2. 判断字符串末位是否为‘-’,当末位为‘-’号时:

2.1 将字符串切掉末位,去除前导 0(strip('0')) ,切下来的末位字符拼接在字符串开头

  1. 输出去除前导 0 的字符串(strip('0'))
<code>num = input()[::-1]       # 将输入的字符串逆序
if num[-1] == '-': # 若逆序后末位为‘-’
num = num[-1] + num[:-1].strip('0') # 将末位‘-’切下来拼接在字符串开头,strip('0')可去除字符串开头的前导0
print(num.strip('0')) # 输出逆序的数字,当num为正数时,前导0还可能存在,必须用strip('0')消除/<code>

可以结合字符串与整数方法,用int()函数将字符串转为整数的同时消除其前导0。

<code>num = input()[::-1]       # 将输入的字符串逆序
if num[-1] == '-': # 若逆序后末位为‘-’
print(-int(num[:-1])) # 将逆序的字符串转为整数,系统会自动消除前导0
else:
print(int(num)) # 输出逆序的数字/<code>

上述代码可以用条件运算表达式实现:

<code>num = input()[::-1]     # 将输入的字符串逆序
print(-int(num[:-1])) if num[-1] == '-' else print(int(num)
如果有其他问题需要交流的话欢迎私信或者加python技术交流群695185429/<code>


十进制整数如何翻转


分享到:


相關文章: