【Python】Comet OJ C0206 [2011普及組-A]數字反轉

題目描述

給定一個整數,請將該數各個位上數字反轉得到一個新數。新數也應滿足整數的常見形式,即除非給定的原數爲零,否則反轉後得到的新數的最高位數字不應爲零(參見樣例2)。

輸入描述

共一行,一個整數N

輸出描述

共一行,一個整數,表示反轉後的新數。

樣例輸入 1 

123

樣例輸出 1

321

樣例輸入 2 

-380

樣例輸出 2

-83

提示

【數據範圍】

−1,000,000,000 <= N <= 1,000,000,000

思路解析:

分三種情況:

第一種是大於0,尾部不是0就正常逆序即可,是0的話,設個計數器,記住標號,然後不輸出那些0就行

第二種等於0,不說了

第三種小於0,就是負數,負號不能動,那麼就先輸出它,其他的跟大於0時考慮的一樣

代碼如下:

#C0206.py

def count(N):                       #作爲計數器記住下標,反轉後第一個不爲0的數前的數一律不輸出
        i = 0
        for c in N:
            i += 1
            if c != "0":
                print(N[i-1:])
                break
n = input()
N = ""
if eval(n) > 0:
    if n[-1] == "0":
        N = n[::-1]                 #正整數直接逆序即可
        count(N)                    #參數與函數中的參數相同
    else:
        print(n[::-1])
elif eval(n) == 0:
        print(eval(n))
else:
    print("-",end = "")             #首先輸出負號
    if n[-1] == "0":
        N = n[-2:0:-1]              #負數不能直接逆序,要在逆序後不輸出逆序的負號
        count(N)                    #同樣調用count()函數
    else:
        print(n[:0:-1])             #輸出不包括逆序後在後邊的負號

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章