前些时间刷到一道题,思考了一下才做出来,分享一下。
分别输入: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,需要你后续再进行处理);或者输入完毕后使用正则表达式进行匹配,判断是否为数字。