0
点赞
收藏
分享

微信扫一扫

python整形反转

绪风 2022-04-29 阅读 166
python

前些时间刷到一道题,思考了一下才做出来,分享一下。

分别输入:123,321,-123,100,-200

希望得到:321,123,-321,1,-2

即希望在保留正负的情况下将整数进行反转,同时将前置的0去除。

代码:

一、

n=input()
if n[0]=='-':   #判断正负
    a=n[1:len(n)]    #将数字部分提取出来
    a=a[::-1]      #反转
    a=str(int(a))   #利用python的int去除前置‘0’
    print('-'+ a)      #归还负号
else:
    a=n[::-1] 
    a=str(int(a))
    print(a)

二、

当时有人问了我一个问题,说如果不利用直接反转呢?

n=input()
b=str()       #定义一个空字符串
if n[0]=='-':   #判断正负
    for i in range(len(n)-1,0,-1):  #从后往前加入字符串
        b+=n[i]
    print('-'+str(int(b)))
else:
    for i in range(len(n)-1,-1,-1):
        b+=n[i]
    print(str(int(b)))

三、

或者不采用python的 int 定义呢?

n=input()
b=str()       #定义一个空字符串
c=True if n[len(n)-1]=='0' else False  #设立一个标识符
if n[0]=='-':   #判断正负
    for i in range(len(n)-1,0,-1):  #从后往前加入字符串
        if c==True and n[i]=='0':pass         
        else:b+=n[i]
        
    print('-'+b)
else:
    for i in range(len(n)-1,-1,-1):
        if c==True and n[i]=='0':pass         
        else:b+=n[i]
    print(b)

优化思路:

使用eval 或者 正则表达式 判断是否为数字(根据题目要求决定)

举报

相关推荐

0 条评论