zerojudge 為高師附中江其勳老師開發的程式寫作 Online Judge 網站:
https://zerojudge.tw/
進入網站後到 分類題庫>基礎題庫 有一些基礎練習連結如下:
https://zerojudge.tw/Problems?tabid=BASIC#tab00
今天要幫大家介紹如何搭配 python 做幾個基礎的練習:
話說python本身在做標準輸入時不像 c++ 一樣可以直接偵測EOF
例如:
int n; while(scanf("%d",&n) != EOF) { //...主程式... }
上例c++程式中會不斷讀入整數給變數n直到讀到EOF為止
為了讓 python程式可以在 zerojude上順利執行,我們導入了 try....except的概念
(try的用法可參考:http://www.runoob.com/python/python-exceptions.html)
讓讀到 EOF 當作例外來觸發,觸發之後可視程式的需求進一步動作,或終止程式。
例外處理與程式除錯是另外一門藝術,讀者可以藉由下列實例體會在程式中使用try來跳過例外狀況的方便之處,並慢慢學習真正需要做程式除錯時,程式中如何妥善傳遞例外狀況。
題目1. a001: 哈囉
https://zerojudge.tw/ShowProblem?problemid=a001
while True: try:a=input() except:break #過濾掉 EOFError,讀到EOF後直接跳出迴圈 if not a:break #輸入空字串時跳出迴圈 print('hello,',a)
題目2. a002: 簡易加法
https://zerojudge.tw/ShowProblem?problemid=a002
while True: try: #用字串內建的 split() 函式 #將字串做分割並將結果回傳給 a,b a,b=input().split() except: break if not a:break print(int(a)+int(b))
題目3. a003: 兩光法師占卜術
https://zerojudge.tw/ShowProblem?problemid=a003
R=['普通','吉','大吉'] while True: try: M,D=input().split() except: break S=(int(M)*2+int(D))%3 print(R[S])
題目4. a004: 文文的求婚
https://zerojudge.tw/ShowProblem?problemid=a004
#西元年被4整除且不被100整除,或被400整除者即為閏年 while True: try: Y=int(input()) except: break if (Y%4==0 and Y%100!=0)or Y%400==0 : print('閏年') else : print('平年')
題目5. a005: Eva 的回家作業
https://zerojudge.tw/ShowProblem?problemid=a005
n=int(input()) for i in range(n): L=input().split() #A=[int(L[0]),int(L[1]),int(L[2]),int(L[3])] A= list(map(int,L))#一個將 L 串列中的元素取int的簡潔方法 if A[1]-A[0] == A[2]-A[1] : #等差 A.append(A[3]+A[2]-A[1]) else: #等比 A.append(A[3]*int(A[2]/A[1])) #把 A 串列中的元素塞到空字串R裡面,並用空白字元隔開 R="" for a in A: r=str(a) #別忘了 A中的元素已被轉換成int了,要做字串運算的話要再轉換回來 R=R+r+" " print(R.strip())#用字串內建strip函式將頭尾多餘的空白字元刪除
以上五題供大家參考,初學者有空可繼續把全部基本題都做完