数字反转的列表实现方法(python)

这篇博客讨论了如何反转整数的各个位,通过列表操作和数字计算两种方法实现。重点强调了处理中间和末尾的0、符号保留以及单个0的特殊情况。代码中给出了详细注释,分析了两种方法的优劣,认为数字计算方法更优,因为它避免了处理末尾0的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原题目:给定一个整数 N,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零。

位数整除计算是数字反转比较常见的做法,心血来潮试着用列表来做做以熟悉列表的使用,结果在调试过程中出现了很多小错误。

一下是需要注意的地方:

1.数字串的中间可能会有0,不能误删

2.数字串的末尾可能不止一个0,不能漏删

3.“-”的保留问题

4.单个0的输入输出比较特殊

代码如下:

#用列表来做
num=input()
list=[]
for i in num:
	list.append(i) #将输入的数字和符号分别加入列表
if len(list)!=1: #除去单独输入0的情况
#从后往前遍历列表,是0则删除,若碰到不是0的数即刻停止循环
#此处不方便使用len(list)有关索引,因为它的值随着0的删除时刻变化
        for i in range(len(list)):
                if list[-1]=="0":
                        del list[-1]
                else:
                        break
L=len(list)
#若列表中存在符号则先打印
if list[0]=='-':
	print("-",end="")
	for j in range(L-1):
		print(list[L-j-1],end="")
else:
	for j in range(L):
		print(list[L-j-1],end="")

同样附上数字计算方法:

#用数字计算来做
from math import*
num=eval(input())
num0=abs(num)
def solution(num0):
	L=len(str(num0))
	num1=0
	for i in range(L):
		num1+=num0//(10**(L-1-i))*(10**(i))
		num0=num0%(10**(L-1-i))
	return num1
if num>0:
	print(solution(num0))
if num==0:
	print(0)
if num<0:
	print(f"-{solution(num0)}")

两种方法中,个人认为数字计算方法还是最优解,因为相比于列表无需考虑末尾0的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值