作者panex0845 (胖克思)
看板Python
標題Re: Debug_刷題答案 Partial Accept 疑惑
時間Wed Oct 18 03:34:02 2023
※ 引述《depatg1998 (可可可)》之銘言:
: 輸入有三行。
: 第一行為兩個整數 H, L,數字間以空格分開,代表當天氣溫的最高溫及最低溫,保證 H
: >= L。
: 第二行為一個 0-100 間的整數,代表該天的降雨機率。
: 第三行為一非負整數,代表當天的紫外線指數。
...
: 以下為code
: H_L = input().split(' ')
: H_L_int = [int(i) for i in H_L]
: # print(H_L_int)
第一行就錯了
題目要求定義H, L是整數,數字間以空格分開,還要保證 H >= L
幫凱凱寫程式第一件事,要先預設凱凱是智障
你怎麼知道凱凱不會給你隨便輸入:
1.字串、浮點數
2.3個以上溫度或只有1個溫度或是根本沒輸入
3.氣溫用符號「&」、全形空格,而不是半形空格分開
4.把最低溫輸入在前面,最高溫輸入在後面
要避免這種情況發生,
一定要建立一個函式(function)去檢查以下條件,
只要不合法就拋出錯誤或是要求重新輸入:
1.氣溫是否是整數?
2.氣溫是否只有兩個?
3.兩者是否用半形空格分開?
4.即便兩者輸入相反,也必須自行把較高的數字設定成H,最低設定成L
所以應該是:
def announce_rule():
print('告知凱凱輸入規則')
def get_tempertrue():
while True:
userinput = input()
#開始檢查
if not ...:
#如果條件不符合跳回去重新輸入
print('輸入不合法,請重新輸入')
continue
#自動把最高的整數賦值給high,最低溫給low
high = ...
low = ...
return high, low
announce_rule()
H, L = get_tempertrue()
print(H, L)
才能避免以上問題,並且正確地把最高溫賦值給H,最低溫賦值給L
第二、三行同理,
刷題就是為了要對付考試,考試考的就是這個細節,
而不是input output一樣就好,
考試一題假設25分,input output一樣也不會25滿分,頂多給你15~20分
細節出來22~25分,供參考
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.229.208.148 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1697571244.A.6C4.html
1F:噓 aalexx: 競賽題輸入說怎樣就是怎樣,題目定義好了,又不是面試什麼10/18 05:17
2F:→ aalexx: 都是自己假設的10/18 05:17
講白癡話 刷題不面試不考試 你刷身體健康的?
這就是書本的不會告訴新人的細節 也是新人最容易陷入的誤區
平時不養成作答細節 考試你答的出來才有鬼
另外看你在本板的推文 沒什麼建設性的回應 只會噓人
這邊真的不需要你 敗壞本板風氣
※ 編輯: panex0845 (27.53.144.252 臺灣), 10/18/2023 06:48:55
3F:→ lycantrope: constraints問都不問就這樣寫,我也是笑了10/18 12:18
4F:推 venomsoul: 呃說真的我就是那個刷題刷健康的10/19 03:32
5F:→ aegius1r: 沒必要吧10/19 08:07
6F:噓 vup4jp6: 擅自改變輸入規則 會給你對? 程式碼格式只給UI用? 10/20 16:15
7F:→ vup4jp6: 溝通格式跟協定呢? 不管不顧?10/20 16:16
8F:→ vup4jp6: 沒出事都好說 出事了多一個少一個字元我都跟你翻臉10/20 16:27
你不懂我在講什麼 建議多看幾次 重新理解
這題很明顯是使用者導向的題目
一定要就可能的情形拋出錯誤分數才會高
你當然可以不寫 也不能說你錯 但是你拿的到高分嗎
※ 編輯: panex0845 (39.9.231.108 臺灣), 10/20/2023 19:17:30
9F:噓 karco: 這題不是要考這個吧… 10/23 10:14
10F:→ karco: 跟原Po要問的是兩回事 10/23 10:14
11F:→ karco: 當然你講的在面試時是要提出來跟考官討論沒錯 10/23 10:14
12F:噓 ddavid: 把刷題跟面試的目的性弄混了啦 10/23 14:29
13F:→ zerof: 奇葩 10/25 01:21