題解|ZeroJudge a135. 12250 - Language Detection

【題目】a135. 12250 - Language Detection

題解

a135.py
1
2
3
4
5
6
7
8
9
10
a={"HELLO":"ENGLISH", "HOLA":"SPANISH","HALLO":"GERMAN","BONJOUR":"FRENCH","CIAO":"ITALIAN","ZDRAVSTVUJTE":"RUSSIAN"}
w=input()
count=1
while(w!="#"):
if (a.get(w)!=None):
print("Case ",count,": ",a.get(w),sep="")
else:
print("Case ",count,": ","UNKNOWN",sep="")
count+=1
w=input()

解說

首先,我們建立一個字典a,由題目,我們可以得知各語言的HELLO,所以我們先以以下格式建立字典"單字":"語言",例如HELLO是英文,我們就在字典加入"HELLO":"ENGLISH",依此類推。
可以看到,第5行有一個a.get(w)!=None,這是用來檢查輸入的單字是否是已知的(在字典a內的)單字,如果不是(不在字典a內)的話,a.get(w)==None

FAQ

為什麼要用a.get(w)?我記得a[w]不是也是一樣意思嗎?有差嗎?

有差!差別就在…
如果你用a[w],而字典裡沒有w這個key的話,你會得到一個KeyError,但是,如果使用a.get(w)的話,他只會return None而不報錯。

當在print()函數中使用逗號(,)分隔時,print()預設會有一個空格,例如:

1
print("hello","world")

會輸出

1
hello world

但是,假如我們在print()中加入sep,就可以將空格替換成其他東西,例如:

1
print("hello","world",sep="&")

會輸出

1
hello&world

這裡,我們寫sep="",表示不要有東西,因此當我們寫

1
print("hello","world",sep="")

輸出就會是

1
helloworld

while迴圈裡的w!="#"是甚麼?

從【輸入說明】可以看到

輸入以僅含有一個「#」的一行作為結束,該行不需處理。

w!="#"就是用來判斷輸入是不是#,如果是的話,就跳出迴圈,結束程式。

結語

以上就是本題題解,倘若有誤或是對於解題仍有疑問,歡迎於底下留言區留言。