← 返回 Day 5 正文

Day 5 · 练习与清单

Day 005 — 布尔值与条件判断:检查清单与练习题

✅ 今日完成清单

概念理解

代码练习


📝 练习题

练习 1:闰年判断器

编写一个函数判断给定年份是否为闰年。

闰年规则: - 能被 4 整除但不能被 100 整除,是闰年 - 能被 400 整除,也是闰年 - 其他都不是闰年

python
def is_leap_year(year: int) -> bool:
    """
    判断 year 是否是闰年。
    要求:使用链式比较或 and/or/not 简化条件。
    """
    pass

# 测试用例
# print(is_leap_year(2000))  # True (能被 400 整除)
# print(is_leap_year(1900))  # False (能被 100 整除但不能被 400 整除)
# print(is_leap_year(2024))  # True (能被 4 整除但不能被 100 整除)
# print(is_leap_year(2023))  # False

进阶要求:使用三元表达式写成一行的版本。


练习 2:数字分类器

编写函数,输入一个整数,判断它属于以下哪类:

python
def classify_number(n: int) -> str:
    """
    返回数字的分类描述。
    要求:使用 if/elif/else,尽可能使用链式比较和逻辑运算符。
    """
    pass

# 测试用例
# print(classify_number(10))   # "正偶数"
# print(classify_number(7))    # "正奇数"
# print(classify_number(0))    # "零"
# print(classify_number(-4))   # "负偶数"
# print(classify_number(-3))   # "负奇数"

练习 3:密码强度检测器

编写函数,根据以下规则评估密码强度:

python
def password_strength(password: str) -> str:
    """
    返回密码强度等级:'弱' / '中' / '强' / '很强'
    提示:用 any() 函数和字符串方法检查字符类型。
    str.isupper(), str.islower(), str.isdigit() 等可用来判断字符。
    """
    pass

# 测试用例
# print(password_strength("abc"))          # "弱"
# print(password_strength("abc123"))       # "中"
# print(password_strength("Abc12345"))     # "强"
# print(password_strength("Abc@12345xyz")) # "很强"
# print(password_strength("ABCDEFG"))      # "弱" (只有大写字母)

提示: - 可以用 any(c.isupper() for c in password) 检查是否包含大写字母 - 特殊字符判断:not c.isalnum() 可以检查非字母数字字符


练习 4:三角形类型判断

输入三个边长,判断能否构成三角形,如果能,是什么三角形?

python
def triangle_type(a: float, b: float, c: float) -> str:
    """
    判断三角形类型。
    规则:
    - 任意两边之和大于第三边才能构成三角形
    - 三边相等:等边三角形
    - 两边相等:等腰三角形
    - 勾股定理满足:直角三角形
    - 其他:普通三角形
    
    返回:"不能构成三角形" / "等边三角形" / "等腰三角形" / "直角三角形" / "普通三角形"
    """
    pass

# 测试用例
# print(triangle_type(1, 2, 3))     # "不能构成三角形" (1+2=3,不大于)
# print(triangle_type(3, 4, 5))     # "直角三角形" (3²+4²=5²)
# print(triangle_type(5, 5, 5))     # "等边三角形"
# print(triangle_type(5, 5, 3))     # "等腰三角形"
# print(triangle_type(7, 8, 9))     # "普通三角形"

注意:浮点数比较时要注意精度问题,可以用 abs(a² + b² - c²) < 1e-9 代替 a² + b² == c²。


练习 5:简易计算器(条件分支版)

编写一个四则运算计算器,支持 +, -, *, / 四种运算。

python
def simple_calculator(num1: float, operator: str, num2: float) -> str:
    """
    执行四则运算。
    
    参数:
        num1: 第一个数
        operator: 运算符 (+, -, *, /)
        num2: 第二个数
    
    返回:
        格式化结果字符串,例如 "3 + 4 = 7"
        注意:除数为 0 时返回错误信息
    """
    pass

# 测试用例
# print(simple_calculator(10, "+", 5))   # "10.0 + 5.0 = 15.0"
# print(simple_calculator(10, "-", 5))   # "10.0 - 5.0 = 5.0"
# print(simple_calculator(10, "*", 5))   # "10.0 * 5.0 = 50.0"
# print(simple_calculator(10, "/", 5))   # "10.0 / 5.0 = 2.0"
# print(simple_calculator(10, "/", 0))   # "错误:除数不能为 0"
# print(simple_calculator(10, "^", 5))   # "错误:不支持的运算符 ^"

进阶:添加更多的运算符支持(//, %, **)。


📊 自评

项目 掌握度 (1-5)
布尔类型理解(bool 是 int 的子类) ⭐⭐⭐⭐⭐
Truthy / Falsy 值判断 ⭐⭐⭐⭐⭐
比较运算符与链式比较 ⭐⭐⭐⭐⭐
== 与 is 的区别 ⭐⭐⭐⭐⭐
短路求值原理 ⭐⭐⭐⭐⭐
逻辑运算符优先级 ⭐⭐⭐⭐⭐
if/elif/else 条件分支 ⭐⭐⭐⭐⭐
守卫子句优化嵌套 ⭐⭐⭐⭐⭐
三元表达式 ⭐⭐⭐⭐⭐

📚 参考资料