發表文章

目前顯示的是 2月, 2020的文章

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 =

Zerojudge 基礎題庫a040 阿姆斯壯數(Python)

圖片
題目要求輸入兩個數字,代表著範圍,並輸出範圍裡的阿姆斯壯數們。如沒有,輸出none。 從上面往下看,只要一有想法,可以直接拋棄這篇文章,追隨你的想法。 1. 什麼是阿姆斯壯數 從題目節錄 所謂 Armstrong number 指的是 一個 n 位數的整數,它的所有位數的 n 次方和恰好等於自己 。 相信你沒有問題 :) 2. 如何開始? 如果是我,我會先 做一個函數,判斷是否為阿姆斯壯數 的函數 3. 如何知道範圍內是否有阿姆斯壯數? 使用for迴圈,直接 窮舉 ,再一一判斷是否為阿姆斯壯數。 4.我要程式碼!! 自己寫才會進步,每人寫出的程式碼都有自己的特色,要好發掘自己的特色。 def spreadNum (num): '''enter a string (integer) and returns the split ('3000' -> ['3', '0', '0', '0']) (list)''' list1 = list (num) return list1 def calSpread (list1): '''input: a list which is splitted (['3', '0', '0']) (list) output: the calculation of the num (integer)''' ans = 0 for i in list1: ans = ans + int (i) ** len (list1) return ans while 1 : try : q = input () except : break q = q . split() button = int (q[ 0 ]) top = i

Zerojudge 基礎題庫a021 大數運算(Python)

圖片
eval()真是太好用了~ 只是要排除除法的問題有點煩,Python好棒! 程式碼: 1 2 3 4 5 6 7 8 9 10 11 12 while 1 : try : x = input () except : break y = x . split() if y[ 1 ] == "/" : print ( int (y[ 0 ]) // int (y[ 2 ])) else : print ( eval (x))

Zerojudge 基礎題庫a020 身分證檢驗(Python)

圖片
基本上不要把fake打成false就可以了,耐住性子。 程式碼: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 def tran_to_number (char): num = ord (char) # A ~ H, 65 ~ 72 -> -55 if num >= 65 and num <= 72 : num = num - 55 # I ,73 -> 34 elif num == 73 : num = 34 # J ~ N, 74 ~ 78 -> -56 elif num >= 74 and num <= 78 : num = num - 56 # O, 79 -> 35 elif num == 79 : num = 35 # P ~ V, 80 ~ 86 -> -57 elif num >= 80 and num <= 86 : num = num - 57 # W -> 32 elif num == 87 : num = 32 # X -> 30 elif num == 88 : num = 30 # Y -> 31 elif num == 89 : num = 31 # Z -> 33 elif num == 90 : num = 33 return num % 10 * 9 + num // 10 while 1 : try :