q878. Python 駭客題-檢查數字
標籤 : Python 型別檢查 駭客題
通過比率: 5人/ 9人 ( 56%) [非即時]
評分方式:
Special

最近更新 : 2025-08-20 22:56

內容
Anon 和 Soyo 是合作寫程式的夥伴,他們當前的需求是要寫一個函數驗證其他程式傳來的資料是否合法。

 

這個函數會接受任意類型的傳入參數,有可能是 int,有可能是 list,也有可能是 set......等,沒有限制傳入參數的類型。該函數需要檢查傳入的參數是否是 int 類型,且該數字是否為個位數,若兩個條件都為真則回傳 True,反之則回傳 False。

 

這種事應該是很簡單的,且確實有必要做,於是他們都各自動手寫了自己的版本。

 

Anon 的版本:
 
def is_single_digit_int(n) -> bool:
    return isinstance(n, int) and 0 <= n <= 9
 
Soyo 的版本:
 
def is_single_digit_int(n) -> bool:
    return type(n) is int and not n // 10
 
寫完後當然就是送單元測試檢驗結果,但他們發現有一個人的版本在某些情況下,會輸出錯誤的結果,這是他們所不能接受的。

 

基於某些神秘的理由,他們不能公開單元測試的內容,但可以讓你看看他們寫的這兩個函數,你能看出來誰的函數有誤嗎?
輸入說明

本題沒有輸入

輸出說明

輸出共三行,格式如下:

  • 第一行: 輸出 Anon 或 Soyo,代表誰的程式碼是正確的。
  • 第二行: 輸出一個能讓兩份程式碼產生不同結果的資料類型,請從以下選項中擇一: strintfloatlistsetdictboolNoneType
  • 第三行: 輸出該資料類型對應的內容,且這個內容在傳入兩人的函數後,會得到不同的結果。
 
關於第三行的格式規範:
如果要傳入的是可迭代的資料結構,如 listset 和 dict,除非有使用引 " 框起來強調是字串,否則所有元素均視為 int,不接受嵌套。
  • list,使用 python 的語法,每一個元素用逗號隔開,避免有多餘的空白字元,如: [3,17,23]
  • set,使用 python 的語法,每一個元素用逗號隔開,避免有多餘的空白字元,如: {3,17,23}
  • dict,使用 python 的語法,每一組鍵值對用逗號隔開,避免有多餘的空白字元,如: {3:1,17:2,23:3}
  • 其他資料類型: 不用多作其他標記,直接寫輸出即可。
 
這題採用自訂比對,範例輸出的部分僅作為輸出格式範例,都不是正解,直接送出解答即可。
範例輸入 #1


												
											
範例輸出 #1
Anon
float
3.14
範例輸入 #2


												
											
範例輸出 #2
Soyo
str
Huh???
範例輸入 #3


												
											
範例輸出 #3
Anon
dict
{"band":"AnonTokyo","singer":"Tomorin","Fans":122}
測資資訊:
記憶體限制: 64 MB
不公開 測資點#0 (100%): 1.0s , <1K
提示 :
下列情況會被視為答案錯誤:
- 沒有任何輸出
- 無法正常解析輸出
- 輸出並非剛剛好三行
- 任一部分回答錯誤
- 第三行的內容根據第二行的指示轉換時發生錯誤
 
 
- 2025.08.20 更新,修正問題,當使用者傳入錯誤答案,special judge 回傳結果時會引發 UnicodeEncodeError,導致本應是 WA 的結果變成 RE,已重測所有測資(其實就是把 RE 變成 WA,避免誤解)。
 
這是一個我在寫個人專案時踩到的坑,擅自借鑑 lw310659 的風格寫了這題目。
如果有任何關於題目的問題歡迎提出來,或站內信詢問也可以。
標籤:
Python 型別檢查 駭客題
出處:
[管理者: sam851015@gm ... (多挖鼻孔有益身心健康) ]

本題狀況 本題討論 排行

編號 身分 題目 主題 人氣 發表日期
沒有發現任何「解題報告」