【ChaoCode】 Swift 基礎篇 9:流程控制「if else」 作業

Too Leng - Jan 20 - - Dev Community

在一串 if 的語法中,else if 和 else 分別最多和最少可以使用幾個?

else if:0 到無限多個。
else:0 或 1 個。
請問下面左右的兩種寫法有什麼差別嗎?

Image description

左邊的不會印出 10 ~ 19 度時的情況。
右邊的不會印出「很熱」,因為第一個條件 (溫度 >= 20) 就已經包括 (溫度 >= 30) 了,所以只有 20 度以上就是舒適,以下就是很冷。
請問下圖在「布林」這個變數是 true 和 false 的時候,分別會執行哪幾行的「做點什麼」?

Image description

布林為 true 時:5 -> 7 -> 11。
布林為 false 時: 7 -> 11。

 import Foundation

// 【ChaoCode】 Swift 基礎篇 9:條件式流程控制——If 實作作業

// 1. 請根據下述的學校入學條件判斷入學申請者能否入學,並印出對印的文字。
// 「這間學校的入學門檻是平均成績須達 80 分,學費為 128,000 元,平均成績達 92 分以上可以以獎學生身份享全額補助入學。」

func 入學申請(名字: String, 平均成績: Int, 存款: Int)
{
    //👇 請根據不同情況印出以下四種結果。
    if(平均成績>=92) {
        print("🎉 \(名字) 以獎學生身份入學。")
    }else if(平均成績>=80&&平均成績<92 && 存款>=128000)
    {print("✅ \(名字) 可以入學。")
    }
    else if(平均成績>=80&&平均成績<92 && 存款<128000)
    {print("😢 \(名字) 成績達入學門檻,但無法支付學費,不能入學。")
    }
    else if(平均成績<80){print("❌ \(名字) 成績未達入學門檻,不能入學。")
    }


}

入學申請(名字: "保羅", 平均成績: 80, 存款: 128000)
入學申請(名字: "傑克", 平均成績: 92, 存款: 18000)
入學申請(名字: "蘿拉", 平均成績: 95, 存款: 356700)
入學申請(名字: "馬丁", 平均成績: 70, 存款: 152340)
入學申請(名字: "米娜", 平均成績: 84, 存款: 238920)
入學申請(名字: "海倫", 平均成績: 90, 存款: 127000)


// 2. 請根據 Google Doc 中提供的體脂率計算法和體型對照表印出正確的體脂率和體型資訊,如果對象低於 18 歲則只印出「多吃多動,健康快樂長大就好」。

func 體脂率計算(名字: String, 是男生: Bool, 年齡: Int, 身高: Double, 體重: Double)
{
    //👇 請根據不同情況印出以下五種結果,記得要計算體脂率並把它印出來的值四捨五入到小數點第一位。
       if (年齡 < 18) {
           print("\(名字),多吃多動,健康快樂長大就好。")
       } else {
           let bmi = 體重 / ((身高 / 100) * (身高 / 100))
           let bodyFat = 1.2 * bmi + 0.23 * Double(年齡) - 5.4 - 10.8 * (是男生 ? 1 : 0)
           let formatter = NumberFormatter()
           formatter.maximumFractionDigits = 1
           let bodyFatString = "\(名字)的體脂率是 \(formatter.string(for: bodyFat)!) %"

           // 💡 以男生 18~39 歲為基準,計算不同性別和年紀的偏差值。
           let genderBias = 是男生 ? 0 : (21 - 8)

           let isYoungAdult = 年齡 < 40
           var ageBias = 0
           if (!isYoungAdult) {
               let isElder = 年齡 > 59
               if (是男生) { ageBias += isElder ? 5 : 3 }
               else { ageBias += isElder ? 3 : 2 }
           }

           // 💡 把偏差值加起來,計算出正常範圍和肥胖下限
           let bias = Double(genderBias + ageBias)
           let normalLowerBound  = 8 + bias
           let normalUpperBound  = 20 + bias
           let obesityLowerBound = 25 + bias
           let idealRangeString  = "理想值應為 \(normalLowerBound) % ~ \(normalUpperBound) %"

           if (bodyFat < normalLowerBound) {
               print("\(bodyFatString),低於正常標準,\(idealRangeString)。")
           } else if (bodyFat < normalUpperBound) {
               print("\(bodyFatString),位於正常標準,繼續保持!")
           } else if (bodyFat < obesityLowerBound) {
               print("\(bodyFatString),高於正常標準,\(idealRangeString)。")
           } else {
               print("\(bodyFatString),屬於過胖體型,\(idealRangeString)。")
           }
       }


}

體脂率計算(名字: "亞倫", 是男生: true, 年齡: 17, 身高: 149, 體重: 40)
體脂率計算(名字: "克里斯", 是男生: true, 年齡: 40, 身高: 150, 體重: 60)
體脂率計算(名字: "丹尼", 是男生: true, 年齡: 20, 身高: 181, 體重: 53)
體脂率計算(名字: "比爾", 是男生: true, 年齡: 26, 身高: 165, 體重: 53)
體脂率計算(名字: "吉米", 是男生: true, 年齡: 60, 身高: 173, 體重: 120)
體脂率計算(名字: "艾瑪", 是男生: false, 年齡: 17, 身高: 149, 體重: 40)
體脂率計算(名字: "凱西", 是男生: false, 年齡: 40, 身高: 150, 體重: 60)
體脂率計算(名字: "黛比", 是男生: false, 年齡: 20, 身高: 180, 體重: 53)
體脂率計算(名字: "瑪麗", 是男生: false, 年齡: 26, 身高: 165, 體重: 53)
體脂率計算(名字: "米蘭達", 是男生: false, 年齡: 60, 身高: 173, 體重: 120)


Enter fullscreen mode Exit fullscreen mode
. . . . . . . . . . . .