Zerojudge 基礎題庫a038 數字翻轉(Python)

前言:

這題非常簡單,相信再仔細想想一定可以解出來
那我就來敘述我是如何解出這道題目的。

首先,我們要先設一個變數來存放題目,叫做q。
所以輸入一個數字存入p變數的程式碼是:

q = input()

下一步呢,要設計幾個例子,越少越好,可以應付所有的情況。
我有想到三個:

q = 12345
q = 50500
q = 00000

通常在寫的時候,我喜歡把 q = input() 先用 q = (數字) 替代,這樣就不用一直打數字,按一下執行就跑出結果了。

但是要注意的是,使用input時,回傳的東西是字串,所以測試時,要寫:

q = '數字'


第一部分:當q = '12345'時

字串不容易編輯,所以先把它變成串列

q = '12345'
q = list(q)

這樣我們的 '12345' 就會變成 ['1', '2', '3', '4', '5']
接下來呢,你有非常多種作法,但python有的函數叫 reverse(),用一下心裡舒暢~

q = '12345'
q = list(q)
q.reverse()

現在 ['1', '2', '3', '4', '5'] 變成 ['5', '4', '3', '2', '1']
再使用for迴圈一一輸出,結束!

q = '12345'
q = list(q)
q.reverse()

for i in q:
    print(i,end = '')
print()

第二部分:當q = '50500'時

我們使用上面的程式,最後會輸出 00505
但題目有要求,前面有0以下應消除
所以結果應該是505
我們可以檢測q的第一項是否為0,如果為零,把第一項刪掉

q = '12345'
q = list(q)
q.reverse()

while q[0] == '0':
    del q[0]

for i in q:
    print(i,end = '')
print()

如果你要把第一項變成空字串,記得要用切片處理。
q[0] = []    -> [[], '0', '5', '0', '5']
q[:0] = []   -> ['0', '5', '0', '5']
所以你可以這樣寫:

q = '12345'
q = list(q)
q.reverse()

while q[0] == '0':
    q[:0] == []

for i in q:
    print(i,end = '')
print()

第三部分:當 q = '00000'

最後,只剩這一個特殊例子,這會使程式運行時產生錯誤。
所以我們可以使用 try - except 來解決這個問題
當產生錯誤時,輸出0
所以我們修改一下while區塊:


try:
    while q[0] == '0':
    del q[0]
except:
    q = ['0']

最後,我們得到了這題的解答!


q = input() #'5050''
q = list(q) #'5' '0' '5' '0'
q.reverse() #0 5 0 5('')
try:
    while q[0] == '0':
    del q[0]
except:
    q = ['0']
 
 
for i in q:
    print(i,end = '')
print()
















留言

這個網誌中的熱門文章

Zerojudge 基礎題庫a004 文文的求婚 (Python)

紙蜻蜓的受風面積與紙蜻蜓落地時間的關係 #1 [實驗歷程與Python Matplotlib]

Zerojudge 基礎題庫a013 羅馬數字 (Python)