当前位置:首页>python>Python 函数综合进阶项目(

Python 函数综合进阶项目(

  • 2026-10-11 08:25:49
Python 函数综合进阶项目(

Python 函数综合进阶项目

说明:全部项目仅使用「函数定义、参数、返回值、循环、多条件判断、输入输出」,不涉及类、列表(除简单应用)、模块拓展(随机模块可简单使用),难度适中,贴合生活,侧重多函数联动和逻辑思考。

项目1:家庭月度水电费计算器(多条件+多函数联动)

生活场景

家里每个月的水电费都是阶梯收费,输入用水量、用电量,自动计算总费用,还能对比上月费用,判断本月是否节约。

核心要求

1.定义 3 个函数,实现联动:          

○`calc_water_fee(water)`:根据用水量计算水费(阶梯价)

○`calc_electric_fee(electric)`:根据用电量计算电费(阶梯价)

○`total_fee(water, electric, last_month_total)`:计算本月总费用,对比上月总费用,返回费用明细和节约/超支情况

2.阶梯规则(贴合实际,简单易懂):

○水费:每月用水量 ≤15 吨,每吨 3 元;超过 15 吨的部分,每吨 4.5 元

○电费:每月用电量 ≤200 度,每度 0.55 元;201-400 度的部分,每度 0.65 元;超过 400 度的部分,每度 0.9 元

3.主程序:输入本月用水量、用电量、上月总费用,调用函数,输出完整明细(水费、电费、本月总费用、与上月对比结果)。

示例输出

python                  请输入本月用水量(吨):20                  请输入本月用电量(度):250                  请输入上月总费用(元):200                  本月水费:15×3 + (20-15)×4.5 = 67.5 元                  本月电费:200×0.55 + (250-200)×0.65 = 142.5 元                  本月总费用:210.0 元                  与上月对比:超支 10.0 元,请节约用电用水!

参考程序(带注释)

python                  # 1. 计算水费(阶梯价)                  def calc_water_fee(water):                  if water <= 15:                  # 不超过15吨,按3元/吨计算                  return water * 3                  else:                  # 超过15吨,分两部分计算                  return 15 * 3 + (water - 15) * 4.5                  # 2. 计算电费(阶梯价)                  def calc_electric_fee(electric):                  if electric <= 200:                  return electric * 0.55                  elif electric <= 400:                  # 200度以内按0.55元,201-400度按0.65元                  return 200 * 0.55 + (electric - 200) * 0.65                  else:                  # 超过400度,分三部分计算                  return 200 * 0.55 + 200 * 0.65 + (electric - 400) * 0.9                  # 3. 计算总费用并对比上月                  def total_fee(water, electric, last_month_total):                  water_fee = calc_water_fee(water)                  electric_fee = calc_electric_fee(electric)                  current_total = water_fee + electric_fee                  # 对比上月费用,判断节约/超支                  diff = current_total - last_month_total                  if diff < 0:                  compare = f"节约 {abs(diff)} 元,继续保持!"                  elif diff > 0:                  compare = f"超支 {diff} 元,请节约用电用水!"                  else:                  compare = "与上月持平,继续保持!"                  # 返回明细(用字符串拼接,方便输出)                  detail = f"本月水费:{water_fee} 元\n本月电费:{electric_fee} 元\n本月总费用:{current_total} 元\n与上月对比:{compare}"                  return detail                  # 主程序(输入数据+调用函数+输出结果)                  water = float(input("请输入本月用水量(吨):"))                  electric = float(input("请输入本月用电量(度):"))                  last_month_total = float(input("请输入上月总费用(元):"))                  # 调用总费用函数,获取明细并打印                  result = total_fee(water, electric, last_month_total)                  print(result)

项目2:学生成绩管理系统(函数+循环+多功能)

生活场景

老师统计班级学生成绩,需要输入多名学生的多科成绩,计算每科平均分、每个学生的总分和等级,还能查询指定学生的成绩。

核心要求

1.定义 4 个函数,实现多功能联动:          

○`get_grade(score)`:根据单科分数,返回等级(≥90优秀,80-89良好,70-79中等,60-69及格,<60不及格)

○`student_total(score1, score2, score3)`:输入3科成绩(语文、数学、英语),返回总分和3科等级

○`class_average(students_scores)`:输入所有学生的3科成绩(简单用多个参数或列表),返回每科的班级平均分

○`search_student(students_info, name)`:输入学生信息(姓名+成绩+总分+等级),查询指定学生的所有信息,返回查询结果

2.主程序:          

○循环输入3-5名学生的姓名和3科成绩

○调用函数,计算并存储每个学生的总分、等级

○输出班级每科平均分

○提供查询功能,输入学生姓名,输出该学生的详细成绩信息(若不存在,提示“无此学生”)

示例输出

python                  请输入学生人数(3-5人):3                  请输入第1名学生姓名:张三                  请输入语文成绩:85                  请输入数学成绩:92                  请输入英语成绩:78                  请输入第2名学生姓名:李四                  请输入语文成绩:68                  请输入数学成绩:75                  请输入英语成绩:80                  请输入第3名学生姓名:王五                  请输入语文成绩:95                  请输入数学成绩:88                  请输入英语成绩:90                  班级平均分:                  语文:82.67 分                  数学:85.0 分                  英语:82.67 分                  请输入要查询的学生姓名:张三                  张三 成绩详情:                  语文:85 分(良好)                  数学:92 分(优秀)                  英语:78 分(中等)                  总分:255 分

参考程序(带注释)

python                  # 1. 根据单科分数返回等级                  def get_grade(score):                  if score >= 90:                  return "优秀"                  elif score >= 80:                  return "良好"                  elif score >= 70:                  return "中等"                  elif score >= 60:                  return "及格"                  else:                  return "不及格"                  # 2. 计算单个学生3科总分和各科等级                  def student_total(score1, score2, score3):                  total = score1 + score2 + score3                  grade1 = get_grade(score1)# 调用等级判断函数                  grade2 = get_grade(score2)                  grade3 = get_grade(score3)                  return total, grade1, grade2, grade3# 返回多个值                  # 3. 计算班级每科平均分                  def class_average(students_scores):                  # students_scores是列表,每个元素是(语文,数学,英语)                  chinese_total = 0                  math_total = 0                  english_total = 0                  student_num = len(students_scores)# 学生人数                  # 循环累加每科成绩                  for score in students_scores:                  chinese_total += score[0]                  math_total += score[1]                  english_total += score[2]                  # 计算平均分,保留2位小数                  chinese_avg = round(chinese_total / student_num, 2)                  math_avg = round(math_total / student_num, 2)                  english_avg = round(english_total / student_num, 2)                  return chinese_avg, math_avg, english_avg                  # 4. 查询指定学生的成绩信息                  def search_student(students_info, name):                  # students_info是列表,每个元素是(姓名,语文,数学,英语,总分,各科等级)                  for info in students_info:                  if info[0] == name:                  # 找到学生,返回详细信息                  return f"{name} 成绩详情:\n语文:{info[1]} 分({info[4]})\n数学:{info[2]} 分({info[5]})\n英语:{info[3]} 分({info[6]})\n总分:{info[7]} 分"                  # 没找到学生                  return "无此学生"                  # 主程序                  students_info = []# 存储所有学生信息                  students_scores = []# 存储所有学生的3科成绩(用于计算平均分)                  # 循环输入3-5名学生信息                  while True:                  student_num = int(input("请输入学生人数(3-5人):"))                  if 3 <= student_num <= 5:                  break                  print("人数不符合要求,请重新输入!")                  for i in range(student_num):                  print(f"请输入第{i+1}名学生信息:")                  name = input("请输入姓名:")                  chinese = int(input("请输入语文成绩:"))                  math = int(input("请输入数学成绩:"))                  english = int(input("请输入英语成绩:"))                  # 调用函数,获取总分和各科等级                  total, grade_chinese, grade_math, grade_english = student_total(chinese, math, english)                  # 存储学生信息和成绩                  students_info.append([name, chinese, math, english, grade_chinese, grade_math, grade_english, total])                  students_scores.append([chinese, math, english])                  # 调用函数,计算班级平均分并输出                  chinese_avg, math_avg, english_avg = class_average(students_scores)                  print(f"\n班级平均分:\n语文:{chinese_avg} 分\n数学:{math_avg} 分\n英语:{english_avg} 分")                  # 提供查询功能                  search_name = input("\n请输入要查询的学生姓名:")                  print(search_student(students_info, search_name))

项目3:外卖订单结算系统(多条件+函数嵌套)

生活场景

点外卖时,需要计算菜品总价、配送费、优惠券抵扣,最终得出实付金额,还能判断是否满足免配送费条件。

核心要求

1.定义 3 个函数,实现嵌套调用:          

○`calc_food_total(foods)`:输入多个菜品的单价和数量(如:鱼香肉丝28元1份、米饭3元2份),返回菜品总价(提示:可循环输入,或用参数传递多个菜品信息)

○`calc_delivery_fee(food_total, distance)`:根据菜品总价和配送距离,计算配送费(嵌套调用菜品总价函数),规则:

▪菜品总价 ≥50 元,免配送费

▪菜品总价 <50 元:配送距离 ≤3 公里,配送费 5 元;超过 3 公里,每增加 1 公里加 2 元(不足1公里按1公里算)

○`final_pay(foods, distance, coupon)`:计算实付金额,规则:实付 = 菜品总价 + 配送费 - 优惠券金额(优惠券金额不能超过菜品总价+配送费,最低实付1元),返回结算明细

2.主程序:输入菜品信息(至少2种)、配送距离、优惠券金额,调用函数,输出完整结算明细。

示例输出

python                  请输入菜品数量:2                  请输入第1种菜品名称:鱼香肉丝                  请输入单价(元):28                  请输入数量:1                  请输入第2种菜品名称:米饭                  请输入单价(元):3                  请输入数量:2                  请输入配送距离(公里):4                  请输入优惠券金额(元):10                  订单结算明细:                  菜品总价:28×1 + 3×2 = 34.0 元                  配送费:5 + (4-3)×2 = 7.0 元(菜品总价不足50元,距离超3公里)                  优惠券抵扣:10.0 元                  实付金额:31.0 元

参考程序(带注释)

python                  # 1. 计算菜品总价(循环输入多个菜品)                  def calc_food_total():                  food_total = 0.0                  food_num = int(input("请输入菜品数量:"))                  # 循环输入每个菜品的单价和数量                  for i in range(food_num):                  name = input(f"请输入第{i+1}种菜品名称:")                  price = float(input("请输入单价(元):"))                  count = int(input("请输入数量:"))                  food_total += price * count# 累加每个菜品的金额                  return food_total                  # 2. 计算配送费(嵌套调用菜品总价函数)                  def calc_delivery_fee(food_total, distance):                  if food_total >= 50:                  return 0.0# 满50元免配送费                  else:                  # 不足50元,按距离计算配送费                  if distance <= 3:                  return 5.0                  else:                  # 不足1公里按1公里算,用int()取整(如3.2公里按3公里,4.1公里按4公里)                  extra_distance = int(distance) - 3                  return 5.0 + extra_distance * 2.0                  # 3. 计算实付金额,返回结算明细                  def final_pay(distance, coupon):                  food_total = calc_food_total()# 嵌套调用,获取菜品总价                  delivery_fee = calc_delivery_fee(food_total, distance)                  # 计算实付,优惠券不能超过应付金额,最低实付1元                  应付金额 = food_total + delivery_fee                  if coupon > 应付金额:                  coupon = 应付金额# 优惠券抵扣不超过应付金额                  final = 应付金额 - coupon                  if final < 1:                  final = 1.0# 最低实付1元                  # 拼接结算明细                  detail = f"\n订单结算明细:\n菜品总价:{food_total:.1f} 元\n配送费:{delivery_fee:.1f} 元"                  if food_total < 50:                  detail += f"(菜品总价不足50元,距离{distance}公里)"                  else:                  detail += "(菜品总价满50元,免配送费)"                  detail += f"\n优惠券抵扣:{coupon:.1f} 元\n实付金额:{final:.1f} 元"                  return detail                  # 主程序                  distance = float(input("请输入配送距离(公里):"))                  coupon = float(input("请输入优惠券金额(元):"))                  # 调用函数,获取结算明细并打印                  result = final_pay(distance, coupon)                  print(result)

项目4:简易日程提醒器(函数+循环+条件判断)

生活场景

记录每日日程(时间+事项),可以添加日程、查询指定时间的日程,还能判断当前时间是否有日程提醒。

核心要求

1.定义 3 个函数,实现日程管理:          

○`add_schedule(schedules, time, event)`:输入日程列表、时间(如“08:00”)、事项,将日程添加到列表中,返回更新后的日程列表(提示:用列表存储多个日程,每个日程是时间+事项的组合)

○`search_schedule(schedules, target_time)`:输入日程列表和目标时间,查询该时间的日程,返回查询结果(有则输出事项,无则提示“该时间无日程”)

○`check_reminder(schedules, current_time)`:输入日程列表和当前时间,判断当前时间是否有日程,若有,输出提醒信息;若无,提示“当前无日程提醒”

2.主程序:          

○循环提供功能选项:1.添加日程 2.查询日程 3.检查提醒 4.退出

○根据用户选择,调用对应函数,实现日程的添加、查询和提醒功能

○输入时间时,统一格式为“HH:MM”(如“14:30”),无需复杂时间处理

示例输出

python                  欢迎使用简易日程提醒器!                  请选择功能:1.添加日程 2.查询日程 3.检查提醒 4.退出                  请输入选项:1                  请输入日程时间(HH:MM):08:00                  请输入日程事项:早读                  日程添加成功!                  请选择功能:1.添加日程 2.查询日程 3.检查提醒 4.退出                  请输入选项:1                  请输入日程时间(HH:MM):14:30                  请输入日程事项:数学考试                  日程添加成功!                  请选择功能:1.添加日程 2.查询日程 3.检查提醒 4.退出                  请输入选项:2                  请输入要查询的时间(HH:MM):14:30                  14:30 的日程:数学考试                  请选择功能:1.添加日程 2.查询日程 3.检查提醒 4.退出                  请输入选项:3                  请输入当前时间(HH:MM):08:00                  提醒:当前时间(08:00)有日程——早读                  请选择功能:1.添加日程 2.查询日程 3.检查提醒 4.退出                  请输入选项:4                  退出日程提醒器,再见!

参考程序(带注释)

python                  # 1. 添加日程,返回更新后的日程列表                  def add_schedule(schedules, time, event):                  # 每个日程用元组存储(时间,事项),添加到列表中                  schedules.append( (time, event) )                  return schedules                  # 2. 查询指定时间的日程                  def search_schedule(schedules, target_time):                  for time, event in schedules:                  if time == target_time:                  return f"{target_time} 的日程:{event}"                  return "该时间无日程"                  # 3. 检查当前时间是否有日程提醒                  def check_reminder(schedules, current_time):                  for time, event in schedules:                  if time == current_time:                  return f"提醒:当前时间({current_time})有日程——{event}"                  return "当前无日程提醒"                  # 主程序(循环提供功能选项)                  def main():                  schedules = []# 存储所有日程的列表                  print("欢迎使用简易日程提醒器!")                  while True:                  # 打印功能选项                  print("请选择功能:1.添加日程 2.查询日程 3.检查提醒 4.退出")                  choice = input("请输入选项:")                  if choice == "1":                  # 添加日程                  time = input("请输入日程时间(HH:MM):")                  event = input("请输入日程事项:")                  schedules = add_schedule(schedules, time, event)                  print("日程添加成功!\n")                  elif choice == "2":                  # 查询日程                  target_time = input("请输入要查询的时间(HH:MM):")                  print(search_schedule(schedules, target_time) + "\n")                  elif choice == "3":                  # 检查提醒                  current_time = input("请输入当前时间(HH:MM):")                  print(check_reminder(schedules, current_time) + "\n")                  elif choice == "4":                  # 退出程序                  print("退出日程提醒器,再见!")                  break                  else:                  # 输入错误选项                  print("输入错误,请重新选择!\n")                  # 调用主函数,启动程序                  if __name__ == "__main__":                  main()

项目5:体重变化追踪器(函数+循环+数据统计)

生活场景

记录一周的体重,计算一周的平均体重、最大体重、最小体重,还能判断体重变化趋势(上升/下降/平稳)。

核心要求

1.定义 4 个函数,实现体重追踪和统计:          

○`add_weight(weights, day, weight)`:输入体重列表、星期(如“周一”)、体重(公斤),将体重信息添加到列表,返回更新后的列表

○`calc_average_weight(weights)`:输入体重列表,计算一周的平均体重,保留1位小数,返回平均值

○`get_max_min_weight(weights)`:输入体重列表,返回一周的最大体重和最小体重

○`judge_trend(weights)`:输入体重列表(按时间顺序),对比第一天和最后一天的体重,判断趋势:最后一天 < 第一天 → 下降;最后一天 > 第一天 → 上升;相差≤0.5公斤 → 平稳

2.主程序:          

○循环输入一周(7天)的体重,调用添加函数存储体重信息

○调用统计函数,输出一周体重统计结果(平均体重、最大/最小体重、变化趋势)

○提示:体重为小数(如52.5公斤),输入时需支持小数输入

示例输出

python                  欢迎使用体重变化追踪器,请输入一周的体重(公斤):                  请输入周一的体重:55.2                  请输入周二的体重:54.8                  请输入周三的体重:54.5                  请输入周四的体重:54.3                  请输入周五的体重:54.0                  请输入周六的体重:53.8                  请输入周日的体重:53.5                  一周体重统计结果:                  平均体重:54.3 公斤                  最大体重:55.2 公斤(周一)                  最小体重:53.5 公斤(周日)                  体重变化趋势:下降,一周共减重 1.7 公斤,继续加油!

参考程序(带注释)

python                  # 1. 添加体重信息,返回更新后的列表                  def add_weight(weights, day, weight):                  # 每个体重信息用元组存储(星期,体重)                  weights.append( (day, weight) )                  return weights                  # 2. 计算一周平均体重(保留1位小数)                  def calc_average_weight(weights):                  total = 0.0                  for day, weight in weights:                  total += weight                  average = total / len(weights)# 总重量 ÷ 7天                  return round(average, 1)                  # 3. 获取一周最大、最小体重及对应星期                  def get_max_min_weight(weights):                  # 初始化最大、最小体重(取第一个元素)                  max_weight = weights[0][1]                  max_day = weights[0][0]                  min_weight = weights[0][1]                  min_day = weights[0][0]                  # 循环对比每一个体重                  for day, weight in weights:                  if weight > max_weight:                  max_weight = weight                  max_day = day                  if weight < min_weight:                  min_weight = weight                  min_day = day                  return max_weight, max_day, min_weight, min_day                  # 4. 判断体重变化趋势                  def judge_trend(weights):                  first_weight = weights[0][1]# 第一天体重                  last_weight = weights[-1][1]# 最后一天体重(周日)                  diff = first_weight - last_weight                  if diff > 0.5:                  return f"下降,一周共减重 {diff:.1f} 公斤,继续加油!"                  elif diff < -0.5:                  return f"上升,一周共增重 {abs(diff):.1f} 公斤,请注意控制体重!"                  else:                  return "平稳,体重保持良好,继续坚持!"                  # 主程序                  def main():                  weights = []# 存储一周体重信息的列表                  # 定义一周的星期(按顺序)                  days = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]                  print("欢迎使用体重变化追踪器,请输入一周的体重(公斤):")                  # 循环输入7天的体重                  for day in days:                  weight = float(input(f"请输入{day}的体重:"))                  weights = add_weight(weights, day, weight)                  # 调用函数,获取统计结果                  average = calc_average_weight(weights)                  max_w, max_d, min_w, min_d = get_max_min_weight(weights)                  trend = judge_trend(weights)                  # 输出统计结果                  print(f"\n一周体重统计结果:")                  print(f"平均体重:{average} 公斤")                  print(f"最大体重:{max_w} 公斤({max_d})")                  print(f"最小体重:{min_w} 公斤({min_d})")                  print(f"体重变化趋势:{trend}")                  # 调用主函数,启动程序                  if __name__ == "__main__":                  main()

最新文章

随机文章