Python 程式練習:判斷奇偶、季節、閏年
🔢 判斷奇數或偶數:流程圖
這個流程圖展示了 number % 2 模數運算的判斷分支。
核心概念: 模數運算子 (
%)。流程: 輸入 $\rightarrow$ 判斷 $N \pmod 2 = 0$ $\rightarrow$ 輸出「偶數」或「奇數」。
🗓️ 判斷月份所屬季節:流程圖
這個流程圖清晰地展示了根據月份數字,程式會如何逐步檢查並決定輸出哪個季節。
核心概念: 多重條件判斷 (
if/elif/else)。流程: 輸入月份 $\rightarrow$ 依序檢查 $3, 4, 5$ 月 $\rightarrow$ $6, 7, 8$ 月 $\rightarrow$ $9, 10, 11$ 月 $\rightarrow$ 輸出結果。
📅 判斷平年或閏年:流程圖
這是最複雜的一個邏輯判斷,流程圖能有效幫助理解四層的判斷邏輯 (400、100、4 年規則) 是如何嵌套和執行的。
核心概念: 複雜布林邏輯的嵌套判斷。
優先順序: 程式會優先檢查 400 年規則,然後是 100 年規則,最後才是 4 年規則。
💡 下一步建議
您還想嘗試其他哪些經典的程式設計練習題呢?例如:
計算階乘 (Factorial):使用迴圈 (
for或while)。判斷質數 (Prime Number):使用迴圈和除法。
費波那契數列 (Fibonacci Sequence):使用迴圈或遞迴。
請問您對哪一個題目比較有興趣?
...................................................................................................................
💻 Python 布林邏輯運算
您使用了三個核心的布林運算子:and (邏輯和)、or (邏輯或)、not (邏輯非)。
1. and (邏輯和)
程式碼:
print(nu > 3 and nu > 10)功能: 只有當 兩個 條件都成立 (True) 時,結果才是 True。
對應真值表: 您的第一個表格完美對應了這個邏輯。
| 條件 1 (A) | 條件 2 (B) | A and B |
| True (T) | True (T) | True (T) |
| True (T) | False (F) | False (F) |
| False (F) | True (T) | False (F) |
| False (F) | False (F) | False (F) |
2. or (邏輯或)
程式碼:
print(nu > 3 or nu > 10)功能: 只要 任一個 條件成立 (True) 時,結果就是 True。
對應真值表: 您的第二個表格 (稍作調整,使其標準化) 完美對應了這個邏輯。
| 條件 1 (A) | 條件 2 (B) | A or B |
| True (T) | True (T) | True (T) |
| True (T) | False (F) | True (T) |
| False (F) | True (T) | True (T) |
| False (F) | False (F) | False (F) |
3. not (邏輯非)
程式碼:
print(not (nu != 5))功能: 將條件的結果取反。
nu != 5(如果nu不等於 5) 的結果是 True 或 False。not(...)會將這個結果反轉。
實際意義:
not (nu != 5)與nu == 5的邏輯結果是完全相同的。
| 條件 (A) | not A |
| True (T) | False (F) |
| False (F) | True (T) |
測試範例
為了更好地理解結果,我們可以代入一個數字來測試:
假設您輸入 nu = 7:
| 程式碼 | 條件判斷 | 邏輯運算 | 輸出結果 |
| nu > 3 and nu > 10 | (True) and (False) | True and False | False |
| nu > 3 or nu > 10 | (True) or (False) | True or False | True |
| not (nu != 5) | not (True) | not True | False |
💡 練習與進階
您已經掌握了最基礎且最重要的布林邏輯。如果您想繼續練習,可以嘗試將這些邏輯應用在更實際的條件判斷中,例如:
題目: 寫一個 Python 判斷式,檢查某個年份 year 是否為 "奧運年"(能被 4 整除)且 不是 21 世紀(年份必須小於 2000)。
您想嘗試用 and, or, not 組合來寫出這個判斷式嗎?
#輸入數字,判斷是奇數或偶數
#輸入月份數字,判斷是哪個季節 冬:12、1、2
#輸入年分,判斷是平年或閏年(4年1閏,百年為平,四百再閏,千年又閏) python
🔢 判斷奇數或偶數 (Odd or Even)
這個程式會接收一個數字輸入,並使用模數運算子 (%) 來判斷它除以 2 的餘數。如果餘數是 0,則是偶數;否則,是奇數。
# 接收使用者輸入
try:
number = int(input("請輸入一個整數:"))
except ValueError:
print("輸入錯誤,請確保輸入的是一個有效的整數。")
else:
# 使用 % 模數運算子
# number % 2 == 0 表示數字除以 2 的餘數是 0
if number % 2 == 0:
print(f"數字 {number} 是 **偶數** (Even)。")
else:
print(f"數字 {number} 是 **奇數** (Odd)。")
🗓️ 判斷月份所屬季節 (Season by Month)
這個程式會接收一個月份數字 (1-12),然後使用 if/elif/else 結構來判斷它屬於哪一個季節。
定義:
春季 (Spring): 3, 4, 5 月
夏季 (Summer): 6, 7, 8 月
秋季 (Autumn/Fall): 9, 10, 11 月
冬季 (Winter): 12, 1, 2 月
# 接收使用者輸入
try:
month = int(input("請輸入月份數字 (1-12):"))
except ValueError:
print("輸入錯誤,請確保輸入的是一個有效的月份數字。")
else:
# 檢查月份是否在有效範圍內
if 1 <= month <= 12:
# 判斷季節
if month in [3, 4, 5]:
season = "春季 (Spring)"
elif month in [6, 7, 8]:
season = "夏季 (Summer)"
elif month in [9, 10, 11]:
season = "秋季 (Autumn/Fall)"
else: # 12, 1, 2 月
season = "冬季 (Winter)"
print(f"月份 {month} 屬於 **{season}**。")
else:
print("輸入錯誤,月份數字必須介於 1 到 12 之間。")
📅 判斷平年或閏年 (Leap Year)
這個程式會接收一個年份,並根據複雜的閏年判斷規則來確定是平年還是閏年。
閏年判斷規則 (Gregorian Calendar):
能被 4 整除。
但,能被 100 整除的不是閏年(是平年)。
但,能被 400 整除的又是閏年。
在 Python 中,這個邏輯可以寫成一個簡潔的布林表達式:
# 接收使用者輸入
try:
year = int(input("請輸入一個年份:"))
except ValueError:
print("輸入錯誤,請確保輸入的是一個有效的年份。")
else:
# 依據閏年規則判斷
is_leap = False
# 規則 1 & 3: 能被 400 整除的,一定是閏年
if year % 400 == 0:
is_leap = True
# 規則 2: 能被 100 整除,但不能被 400 整除的,是平年 (所以不用設 is_leap = True)
elif year % 100 == 0:
is_leap = False
# 規則 1: 能被 4 整除 (且排除掉上面的 100 倍數),是閏年
elif year % 4 == 0:
is_leap = True
# 輸出結果
if is_leap:
print(f"年份 {year} 是 **閏年** (Leap Year)。")
else:
print(f"年份 {year} 是 **平年** (Common Year)。")
# 另一種更簡潔的寫法 (符合邏輯公式)
# if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
# print(f"年份 {year} 是 閏年 (Leap Year)。")
# else:
# print(f"年份 {year} 是 平年 (Common Year)。")
留言
張貼留言