# if 數值區間 + 邏輯運算子 >若有任何疑問請至 Discord「作業討論」頻道討論 ## 本章節我們要學什麼? 學習[條件判斷](https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Statements/if...else),並且了解[邏輯運算子](https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Guide/Expressions_and_Operators),透過生活中常見情境來練習邏輯能力。 部分題目下方附有 keywords,表示該題目運用到課堂外的語法或技巧,同學可依照 keywords 搜尋了解概念。 ### 題目一:多重條件 一週有七天,請製作一個函式可輸入不同的星期日數,並回傳當天的心情小語,如下例: ``` =JavaScript // input 輸入 myThought(1) myThought(7) myThought(8) // output 輸出 "星期一:穿新衣。" "星期日:來考試。" "一周只有七天,輸入錯囉" ``` **(心情小語內容可自訂、必須使用 [Switch](https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Statements/switch) 語法來達成。)** ### 題目二:飲酒測試 最低法定飲酒年齡為 18 歲,請撰寫一個函式來測驗輸入的年齡是否能飲酒。 ``` =JavaScript // input 輸入 isDrinkable(7) isDrinkable(18) // output 輸出 false true ``` **(必須使用[條件運算子](https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Operators/Conditional_Operator)來達成。)** ### 題目三:發燒檢測 人的中心體溫通常會自動調節在 37 ℃ 左右,只要 ≥ 38度就代表可能發燒了!請製作一個探測人體溫度是否發燒的函式。 ``` =JavaScript // input 輸入 isFever(37) isFever(39) // output 輸出 False True ``` ### 題目四:溫標轉換 目前常見的溫度標示有攝氏(°C)與華氏(°F),請撰寫兩個函式可以轉換彼此四捨五入至小數第一位,如下範例。 * 攝氏轉華氏: (10°C x 9/5) + 32 = 50°F * 華氏轉攝氏: (10°F − 32) × 5/9 = -12.2°C ``` =JavaScript // input 輸入 CtoF(10) FtoC(10) // output 輸出 50 -12.2 ``` ✨keywords:Math.round() ### 題目五:餵食青蛙 請幫遊戲內的青蛙角色設計被餵食飼料時的反應,輸入不同種類單位大小的飼料,讓青蛙做出相對應的回饋,如下範例: * 飼料太小(<=5) 回傳 "嘓!" * 飼料太大(>=50) 回傳 "嘔" * 如果以上都不是,回傳 "..." ``` =JavaScript // input 輸入 frogEat(1) frogEat(100) frogEat(10) // output 輸出 "嘓!" "嘔" "..." ``` ### 題目六:計算球體體積 請製作一個球體積計算函式,參數為半徑,回傳計算後四捨五入取至第一位小數的結果。 球體積 = 4 / 3 x π x 球半徑³ ``` =JavaScript // input 輸入 sphereVolume(1) sphereVolume(10) sphereVolume(20) // output 輸出 4.2 4188.8 33510.3 ``` 可參考:[球體積計算機](https://www.google.com/search?client=firefox-b-d&q=sphereVolume+calc) ✨keywords:Math.PI ### 題目七:BMI 計算 BMI 稱為身體質量指數(Body Mass Index,縮寫為BMI),是目前美國疾病管制局及世界衛生組織所認可,利用身高為基礎來測量體重是否符合標準。請套用以下公式製作一個 BMI 計算函式。 <div style="text-align: center; padding: 4rem"> BMI = 體重(公斤) / 身高的平方(公尺) </div> ![BMI範圍表格](https://i.imgur.com/Ca8hB0Z.png) ``` =JavaScript // input 輸入 bmi(cm,kg) bmi(178,20) bmi(178,65) bmi(178,77) bmi(178,89) bmi(178,100) bmi(178,200) // BMI(身高,體重) // output 輸出 "體重過輕" "正常範圍" "異常範圍" "異常範圍" "異常範圍" "異常範圍" ``` 延伸思考:可將過重、輕度肥胖、中度肥胖、重度肥胖、腰圍功能判斷也完成。 ### 題目八:斜邊計算 直角三角形的斜邊長度公式為:x² + y² = z²,請製作一個輸入兩邊邊長並回傳四捨五入取至小數第一位斜邊的函式。 ``` =JavaScript // input 輸入 calcHypotenuse(10, 10) // output 輸出 14.1 ``` ✨keywords:Math.sqrt() ### 題目九:FizzBuzz FizzBuzz 是一個簡單的小遊戲,給定一串從 1 到 100 的數字: * 如果是 3 的倍數,就印出 “Fizz” * 如果是 5 的倍數,就印出 “Buzz” * 如果同時是 3 和 5 的倍數,就印出 “FizzBuzz” * 將結果回傳為一個陣列。 ``` =JavaScript // Todo 待完成 function fizzBuzz100(){ let result = [] let count = 1 while (count <= 100) { // // 在此的程式將會被執行 100 次 // 請撰寫判斷將 FizzBuzz 與數字放入 result 陣列之中 // count ++ } return result } // input 輸入 fizzBuzz100() // output 輸出 ["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14","FizzBuzz"......後續省略] ``` ### 題目十:蜘蛛下網 ![蜘蛛下網](https://i.imgur.com/PwwLRkY.png) 蜘蛛在一個由四個支撐點構成,11x11 單位的正方形蜘蛛網上。請製作一個函式以蜘蛛的座標為參數並依循以下規則回傳結果: * 計算出距離蜘蛛最近的點並回傳"哪裡是最近的支撐點 + 最短路徑距離"。 * 如果蜘蛛超出蜘蛛網外,回傳"蜘蛛不在網上了"。 ``` =JavaScript // input 輸入 spiderLeaveWeb(8, 3) spiderLeaveWeb(5, 5) spiderLeaveWeb(6, 5) spiderLeaveWeb(5, 6) spiderLeaveWeb(6, 6) spiderLeaveWeb(20, 20) spiderLeaveWeb(0, 0) spiderLeaveWeb(11, 0) spiderLeaveWeb(0, 11) spiderLeaveWeb(11, 11) // output 輸出 "右上角為最近的支撐點,距離 4.2 單位" "左上為最近的支撐點,距離 7.1 單位" "右上角為最近的支撐點,距離 7.1 單位" "左下角為最近的支撐點,距離 7.1 單位" "右下角為最近的支撐點,距離 7.1 單位" "蜘蛛不在網上了" "左上為最近的支撐點,距離 0 單位" "右上角為最近的支撐點,距離 0 單位" "左下角為最近的支撐點,距離 0 單位" "右下角為最近的支撐點,距離 0 單位" ``` 延伸思考:可以將蜘蛛網的尺寸(最大x、最大y)作為參數帶入函式中,思考會遇到什麼樣的情境並撰寫判斷回應。 ## 回報流程 1. 將答案貼在 Codepen 並複製 Codepen 連結貼至「回報區」回報 ![](https://i.imgur.com/vftL5i0.png) ## 作業提交等級 * LV1:解出 10 題,並提交 Codepen * LV2:設計一個 hackmd,嘗試自己設計 5 題 * LV3:嘗試去做其他學生寫的題目,並 tag 學員回報給他,感謝他的命題,讓自己觀念更好 <!-- 解答: https://codepen.io/jmimiding4104/pen/bGOaxdq?editors=1012 這邊解答可能不都是最佳的解法, 適合初學者或者該題突然卡住者, 內容程式碼有針對內容進一步註解可供參考。 --> ## 回報區 | Discord | LV1 答案 | LV2 自行設計題目 | LV3 做其他學員設計的題目 | |:----------------:|:----------------------------------------------------------------------------:|:-------------------------------------------------------:|:----------------------------------------------------------------------------:| | voke |[CodePen](https://codepen.io/FiSi-the-lessful/pen/oNKYKej) |[拍賣會](https://hackmd.io/@tscZKz0FSGa3PpVc74W0cA/Sys0UwUy1x)| | | 泊岸 |[CodePen](https://codepen.io/qoq77416416/pen/GRVWRjz?editors=0012) || | | GTR150 |[CodePen](https://codepen.io/Wer-Qwe/pen/eYqvdQb?editors=1011) ||[voke的拍賣會](https://codepen.io/Wer-Qwe/pen/MWNvKqm?editors=1111) | | ya_meow |[Codepen](https://codepen.io/gkfxzvcb-the-bashful/pen/rNXyWox)| | | yuling |[Codepen](https://codepen.io/yu-ling-peng/pen/eYqvmVP?editors=1111)| | | Sonia |[Codepen](https://codepen.io/YUJOU/pen/abeJwGq?editors=0011)| | | tim |[Codepen](https://codepen.io/jskrtivy-the-animator/pen/wvVJBBz?editors=0011)| | | a1phaki(小k)|[CodePen](https://codepen.io/a1phaki/pen/bGXqrYW?editors=1010)|[西洋棋](https://hackmd.io/@EP4-XOR_SmCIo0G4bIbglA/r1fqFYAJ1x) |[voke的拍賣會](https://codepen.io/a1phaki/pen/QWeMNor?editors=1111)| | 倫倫|[CodePen](https://codepen.io/f5badapple/pen/rNXyrPG?editors=0011)| | | | chris|[CodePen](https://codepen.io/chris-chen-the-selector/pen/RwXpzWy?editors=0012)| | | | 毛巾 |[CodePen](https://codepen.io/bqdcjboa-the-solid/pen/zYgZWoZ)| | | | Jainee |[CodePen](https://codepen.io/Jainee0110/pen/xxvqYNg)| | | | 姜承 |[CodePen](https://codepen.io/Troy0718/pen/eYqWWbO?editors=0012)| | | | 是在哈囉 |[CodePen](https://codepen.io/miyxdhem-the-solid/pen/bGXqBPJ?editors=1111)| | | | yuyeh_1212 |[CodePen](https://codepen.io/yuyeh1212/pen/LYwWyqL)| | | | haojng |[CodePen](https://codepen.io/hjxu/pen/BaXZymo)| | | | kaka_945 |[CodePen](https://codepen.io/kay945/pen/wvVJxGZ)| | | | xiaobeng1075 |[CodePen](https://codepen.io/goodea/pen/qBerRVY?editors=0011)| | | | Tatsu |[CodePen](https://codepen.io/chindesu0207/pen/eYqRGrx)| | | | 嚼勁先生 |[CodePen](https://codepen.io/James520284/pen/ZEgyVQB)| | | | ycl325.etheddie |[CodePen](https://codepen.io/wdvikfuz-the-selector/pen/abewPjK)| | | |Hailey|[CodePen](https://codepen.io/sxbokfja-the-flexboxer/pen/jOgGOdR?editors=0011)| | Ariel |[CodePen](https://codepen.io/ariel0510/pen/gOVGMeX?editors=0012)| | | xiang5141 |[CodePen](https://codepen.io/XIANG-XIANG/pen/abeLRVa?editors=0010)| | | Mike |[CodePen](https://codepen.io/mike2049/pen/oNKGRVr?editors=0012)| | | ab567ab5 |[CodePen](https://codepen.io/WanTzu-Chiang/pen/WNVXYJM?editors=0012)| | | Kaya |[CodePen](https://codepen.io/kayaribi/pen/WNVdOMZ)| | | charlottelee849 |[CodePen](https://codepen.io/char849/pen/ZEgrOdq)| | | 陳小廷 |[CodePen](https://codepen.io/ting1124/pen/ExqbKYw)| | | Hedwig |[CodePen](https://codepen.io/adirehfz-the-encoder/pen/abeGqRm?editors=1011)| | |Celine|[CodePen](https://codepen.io/szuning/pen/xxvzdaZ)| | |邵|[CodePen](https://codepen.io/ukscrlno-the-typescripter/pen/NWQeWGp?editors=1011)| | |KevinHuang|[CodePen](https://codepen.io/qw-huang/pen/RwXEWmK?editors=0012)| | |Nocab Wang ( 培根 )|[CodePen](https://codepen.io/PeihanWang/pen/LYwMbLm?editors=0012)| | |Chun|[CodePen](https://codepen.io/Chun_debbie/pen/raBWGQq?editors=0011)| | |KOMATSU PEI|[CodePen](https://codepen.io/Komatsu2021/pen/azomzmV?editors=0012)| | |Nooooora|[CodePen](https://codepen.io/Nora-Ch/pen/jEWGbKN)|| |suemma|[CodePen](https://codepen.io/suemma/pen/myVjazE)||