前些时间刷到一道题,思考了一下才做出来,分享一下。
分别输入: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 或者 正则表达式 判断是否为数字(根据题目要求决定)