# GESP等级:二级 | GESP Python 二级考点
"""
============================================================================
  第3节:math综合 —— 实操练习
  课程编号: GESP #35
  时长规划: 40:00 - 55:00 (15分钟)
============================================================================

【练习说明】
- 每个练习独立运行，完成后注释掉再写下一个
- 先独立思考，写出你的答案，再运行验证
- 遇到困难可以参考 S3_01_课程讲义.py 中的演示代码

============================================================================
练习 1:填空 —— math 函数调用（5分钟）
============================================================================

"""
题目:在下方 ____ 处填入正确的函数名或参数，使代码输出预期结果

请在下方补全代码，取消注释后运行验证:

import math

# 1.1 圆周率
print("π =", ____)          # 预期输出: π = 3.141592653589793

# 1.2 平方根
print("√100 =", ____(100))  # 预期输出: √100 = 10.0

# 1.3 向下取整
print("floor(3.9) =", ____(3.9))  # 预期输出: floor(3.9) = 3

# 1.4 向上取整
print("ceil(3.1) =", ____(3.1))   # 预期输出: ceil(3.1) = 4

# 1.5 三角函数 sin(90°)
print("sin(90°) =", math.sin(math.____(90)))  # 预期输出: sin(90°) = 1.0
"""

# ====== 参考答案（供教师使用，学生先自己填空） ======
"""
1.1  math.pi
1.2  math.sqrt
1.3  math.floor
1.4  math.ceil
1.5  radians    （math.radians(90) 将 90° 转换为弧度）
"""


# ============================================================================
# 练习 2:用 math.pi + circle() 计算周长（5分钟）
# ============================================================================

"""
题目:补全下方代码，使用 turtle 画一个圆形，并在控制台输出它的周长。

要求:
1. 使用 turtle.circle(radius) 画圆
2. 使用 math.pi 计算公式:C = 2 * π * r
3. 在控制台输出:半径为 X 的圆，周长为 Y.YY

提示:turtle.circle(r) 会画一个半径为 r 的圆
"""

# 请在下方补全代码:

import turtle
import math

radius = 50

# turtle.circle(radius)   ← 取消注释来画圆

# 计算周长
# circumference = 2 * math.pi * radius

# 输出结果
# print(f"半径为 {radius} 的圆，周长为 {circumference:.2f}")

# turtle.done()


# ============================================================================
# 练习 3:计算圆形花坛的围栏长度（应用题 · 5分钟）
# ============================================================================

"""
题目:
小明家有一个圆形花坛，半径是 2.5 米。
他想在花坛外围一圈围栏，每米围栏需要 8 颗螺丝。
请问:
  (1) 围栏总长度是多少米?（保留 2 位小数）
  (2) 需要多少颗螺丝?（向上取整，因为多一颗比少一颗好）

要求:使用 math.pi 和 math.ceil 解题
"""

# 请在下方写出完整代码:

import math

radius = 2.5
# circumference = 2 * math.pi * radius
# screws = math.ceil(circumference * 8)
# print(f"花坛半径: {radius} 米")
# print(f"围栏长度: {circumference:.2f} 米")
# print(f"所需螺丝: {screws} 颗")


# ============================================================================
# 练习 4:计算等腰三角形的底边（勾股定理 · 选做）
# ============================================================================

"""
题目:
一个等腰三角形，腰长为 5，高为 4。
求底边长度的一半是多少?底边全长是多少?

提示:腰（斜边）、高（直角边）、底边一半（另一直角边）构成直角三角形
使用勾股定理:a² + b² = c²
"""

# 请在下方写出代码:

import math

# waist = 5      # 腰长（斜边）
# height = 4     # 高（直角边）
# half_base = math.sqrt(waist ** 2 - height ** 2)  # 底边一半
# base = 2 * half_base
# print(f"底边一半: {half_base}")
# print(f"底边长: {base}")
