0
点赞
收藏
分享

微信扫一扫

python小练习——整形反转

玩物励志老乐 2022-04-29 阅读 93
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 (不是数字直接报错,但是如果是数字的话类型会变成int或者float,需要你后续再进行处理);或者输入完毕后使用正则表达式进行匹配,判断是否为数字。

举报

相关推荐

0 条评论