#26850: [Python]一些實用的寫法


406490150@gms.tku.edu.tw (我是朱朱)

學校 : 國立交通大學
編號 : 139794
來源 : [140.113.236.122]
最後登入時間 :
2022-09-03 11:13:16
e968. 班級名單 (Student list) -- TOI練習賽201903新手組第2題 | From: [36.238.104.152] | 發表日期 : 2021-08-27 23:09

讀行應該都沒什麼問題

___________________

1. range()要怎麼設定呢?

原本單獨輸入一個range(N) 會從 0~N-1 (不包含N),總共N個。 也可以寫成range(0, N)

這題要 1~N,就把起始、終止都+1即可。 range(1, N+1)

 

但是這題要反序輸出,你可能會想使用range()的第三個參數step=-1遞減,但你好不容易寫出了range(1, N+1),怎麼辦呢?

你可以使用reversed(range(1, N+1)),這樣就會反序了。等效於 range(N, 0, -1)。

_____________________

2.  怎麼判斷元素有沒有在list裡?

這題可以把輸入第二行改成一個list,再利用 num not in list 判斷

判斷[有]在裡面: a in B

判斷[沒有]在裡面: a not in B

 

別傻傻的not (a in B) 囉,或是寫個else也很蠢 www

______________________

3. 其他建議選項:

可以使用format達成特定字串格式

可以練習串列生成式

雖然這題只是一個空格,可以利用print('No.', k)自動空白分隔

但如果你想練習的話,可以試試f'No. {k}'這種寫法

另外,下面這種寫法,可以轉成一行的串列生成式(list comprehension)

for __ in ___:

  if _:

   f'NO. {}'

 

[ f'NO. {}' for __ in ___ if _ ]

 

然後還可以用'\n'.join()。

於是就可以寫成一行了

print('\n'.join(f'No. {k}' for ___ in ____ if ___ not in ____))

 

 
ZeroJudge Forum