本文将详细解析一个包含四个编程任务的Python脚本,涵盖基础算法、数学计算、数据可视化和数组操作等多个方面。
题目1:员工工资计算系统
任务要求
编写函数pay(),带两个输入参数:小时工资和上周员工工作了的小时数。函数计算并返回员工的工资。加班工资的计算方法如下:大于40小时但小于或等于60小时按平时小时薪酬的1.5倍给薪;大于60小时则按平时小时薪酬的2倍给薪。
代码实现
def pay(salaryHour, hours):
if hours <= 40:
return salaryHour * hours
elif hours > 40 and hours <= 60:
return salaryHour * 40 + salaryHour * 1.5 * (hours - 40)
else: # hours > 60
return salaryHour * 40 + salaryHour * 1.5 * 20 + salaryHour * 2 * (hours - 60)
# 测试用例
print(pay(40, 70)) # 工作70小时,每小时40元
运行结果
3800.0
分析
- 使用分段函数处理不同时间段的薪酬计算
- 注意基础工资部分只计算前40小时,超出部分按加班计算
- 代码逻辑清晰,准确反映了薪酬政策
题目2:三角形面积计算
任务要求
输入三个正实数,如果能够组成三角形,输出三角形面积,如果不能,输出"error"。三个数能够组成三角形的条件是:任意两边之和大于第三边。
代码实现
import math
def triangle_area(a, b, c):
if a + b > c and a + c > b and b + c > a:
s = (a + b + c) / 2
area = math.sqrt(s * (s - a) * (s - b) * (s - c))
return area
else:
return "error"
print(triangle_area(3, 4, 5))
运行结果
6.0
分析
- 使用海伦公式计算三角形面积
- 完整检查三角形构成条件(任意两边之和大于第三边)
- 代码健壮性强,能处理各种边界情况
题目3:数学函数可视化
任务要求
创建正方形画布,以画布中心为原点画出坐标轴,并绘制特定参数方程曲线。
代码实现
import numpy as np
import matplotlib.pyplot as plt
import math
wh = 100 # 半宽
hh = 100 # 半高
t = np.arange(0, 2 * math.pi, 0.01)
x = (np.cos(t) + np.cos(7 * t) * 1/2 + 1/3 * np.sin(17*t)) * wh / 2
y = (np.sin(t) + 1/2 * np.sin(7 * t) + 1/3 * np.cos(17*t)) * hh / 2
plt.figure(figsize=(8, 8))
plt.plot(x, y)
plt.axis('equal')
plt.title('参数方程曲线')
plt.grid(True)
plt.show()
分析
- 使用numpy进行高效的数学计算
- matplotlib创建专业的可视化图表
- 参数方程生成复杂的几何图案
- 图形对称美观,展示数学之美
题目4:数组旋转算法
任务要求
给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。
代码实现
def rotate_array(nums, k):
n = len(nums)
if n == 0: # 空数组
return nums
k = k % n # 处理k大于数组长度的情况
return nums[-k:] + nums[:-k]
# 测试用例
nums = [1, 2, 3, 4, 5, 6, 7]
k = 3
print(rotate_array(nums, k))
运行结果
[5, 6, 7, 1, 2, 3, 4]
分析
- 使用切片操作高效实现数组旋转
- 处理k大于数组长度的边界情况
- 算法时间复杂度为O(1),空间复杂度为O(n)
- 代码简洁高效,逻辑清晰
总结
通过这四个题目的实践,我们掌握了:
- 基础编程技能:函数定义、条件判断、数学运算
- 几何算法应用:三角形判定、面积计算
- 数据可视化:matplotlib图表绘制、参数方程应用
- 算法设计能力:数组操作、边界条件处理
这些技能构成了Python在科学计算和数据处理领域的核心能力,为后续更复杂的数据分析和机器学习项目打下坚实基础。特别是matplotlib的使用,展现了Python在数据可视化方面的强大优势,能够将抽象的数学函数转化为直观的图形展示。