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函式將頭尾多餘的空白字元刪除
以上五題供大家參考,初學者有空可繼續把全部基本題都做完