iT邦幫忙

1

在 freecodecamp 開啟 daily coding challenge : Day05-Digits vs Letters

  • 分享至 

  • xImage
  •  

freecodecamp 是什麼 ?

以下是他們的自介

freeCodeCamp 是一個免費學習編程的開發者社區,涵蓋 Python、HTML、CSS、React、Vue、BootStrap、JSON 教程等,還有活躍的技術論壇和豐富的社區活動,在你學習編程和找工作時爲你提供建議和幫助。

不管你是前端,後端還是全端,尤其是自學者(aka沒有朋友)
都適用這網站,但目前我以前端為主。
https://www.freecodecamp.org/learn/front-end-development-libraries/

最近有空從頭檢視自己 coding 的基礎
這個系列會有我發現這個網站的小細節及 daily challenge
以 day-num 紀錄,但不會每天更新(也是練習寫文章)


Day 05 - Digits vs Letters

https://ithelp.ithome.com.tw/upload/images/20251001/201793145B4wgTxiDS.png

本題重點在於

  • “判斷數字或文字(包含大小寫)“
  • “如何計算”

思考一下
.
.
.
.
.
.

  1. 判斷字元是數字還是字母

    • 正則表達式
      /[0-9]/ → 判斷是否為數字
      /[a-zA-Z]/ → 判斷是否為字母

    • 字元編碼範圍
      ch >= '0' && ch <= '9' → 數字
      (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') → 字母

      • ASCII 範圍
        僅能在128個字元中使用
        不支援英語系外的語言
      • 避免用正則,效能高一點
方法 語言支援 效能 可讀性 彈性 適合場景
Regex 全語言 複雜格式驗證
型別轉換 全語言 一般判斷,快速過濾
逐字檢查 全語言 最高 大量運算、高效能需求
內建函式 Python 強 / JS 弱 最高 單純數字/文字判斷
例外處理 Python 常見 最低 小規模,直觀程式
  1. 計算方式
  • Loop → 遍歷每個字元累加
  • match → 用正則一次抓出所有數字或字母,再用 .length
  • Reduce → 可以用來做 functional style 的累加計數

tips

  • 為什麼避免用正則,效能會高一點?

    • 正則其實是一個「字串模式匹配引擎」
    • /[0-9]/.test(ch)
    • 字串小的時候差異不大
    • 可讀性優先 → 用正則 (很直觀 /[a-zA-Z]/ 一眼看懂是判斷字母。
    • 效能優先 → 用字元碼範圍 (適合在處理大數據字串、需要極致效能的情境。
  • python 有
    .isdigit() → 是否為數字字元
    .isalpha() → 是否為字母
    .isalnum() → 是否為字母或數字
    但 isdigit() 的小缺點是它也會把 Unicode 數字(像 "②"、"五")判斷成數字。
    而 try: int(ch) 更「嚴格」,只接受真正的阿拉伯數字字元 0–9。

  • javaScript V.S python

語言 方法 優點 缺點
JS for+charCodeAt 快、無需正則 需記 ASCII 範圍
JS for+isNaN/regex 好讀 效能略低
JS match 一行搞定 null 要處理
Python .isdigit() / .isalpha() 直覺、簡潔 不能判斷小數點等特殊數字
Python 列表生成式 Pythonic,簡短 可讀性稍低
Python re.findall 彈性高 效能比直接方法慢

我是阿mo,切檸檬加進水裡,把白白的切掉就不會苦了/images/emoticon/emoticon07.gif


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言