Python 1015
函数的递归
# 递归: 函数自身调用自身
#分治思想
# N的阶乘
"""
9!=1*2*3*4*5*6*7*8*9
9!=8!*9
n!=(n-1)!*n
"""
# 1、递归出口
# def jiecheng(n):
# #递归出口
# if n==1:
# return 1
# else:
# return jiecheng(n-1)*n
#
#
#
# a = jiecheng(4)
# print(a)
# 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。
# 你有多少种不同的方法可以爬到楼顶?
#
# 基础要求
# 编写一个递归函数 climb_stairs(n),计算爬到第 n 阶楼梯的不同方法数。
# n<=1 return 1
# 2 11 2 2
#3 111 12 21 3
#4 1111 121 211 112 22 5
#5 11111 2111 1211 1121 1112 221 212 122 8
# n n-1 + n-2
# def climb_stairs(n):
# if n<=1:
# return 1
# else:
# return climb_stairs(n-1)+climb_stairs(n-2)
"""
题目:学生成绩管理系统
编写一个完整的学生成绩管理系统,要求使用函数、条件判断、循环和容器来实现以下功能:
功能要求
学生信息管理
添加学生(学号、姓名)
删除学生
显示所有学生
成绩管理
录入/修改学生成绩(数学、语文、英语)
计算每个学生的平均分和总分
统计各科目平均分
查询分析
按学号查询学生信息和成绩
找出各科目最高分和最低分
数据结构要求
# 使用字典嵌套结构
students = {
"001": {
"name": "张三",
"scores": {
"math": 85,
"chinese": 92,
"english": 78
}
}
}
"""
students = {
"001": {
"name": "张三",
"scores": {
"math": 85,
"chinese": 92,
"english": 78
}
}
}
# print("001" in students)
def show_menu():
"""显示主菜单"""
print("\n" + "=" * 30)
print(" 学生成绩管理系统")
print("=" * 30)
print("1. 添加学生")
print("2. 删除学生")
print("3. 录入/修改成绩")
print("4. 查询学生信息")
print("5. 显示所有学生")
print("6. 统计科目信息")
print("7. 计算学生平均分")
print("0. 退出系统")
print("="*50)
def add_student(students, student_id, name):
if student_id in students:
print(f"{student_id}已经存在,无法创建")
return
else:
students[student_id]= {
"name": name,
"scores": {
"math": 0,
"chinese": 0,
"english": 0
}
}
print(f"用户{name}添加成功!!!")
return True
def delete_student(students, student_id):
"""删除学生"""
if student_id in students:
name = students[student_id]["name"]
del students[student_id]
print(f"{name}用户已经成功删除")
return True
else:
print(f"{student_id}学生不存在")
return False
# delete_student(students,"001")
def input_scores(students, student_id, ):
"""输入成绩"""
if student_id in students:
print(f"请输入用户{students[student_id]["name"]}的数学、语文、英语成绩:")
math = int(input("math:"))
chinese = int(input("chinese:"))
e = int(input("e:"))
if 0<=math<=120 and 0<=chinese<=120 and 0<=e<=120:
students[student_id]["scores"]["math"]=math
students[student_id]["scores"]["english"]=e
students[student_id]["scores"]["chinese"]=chinese
print("成绩输入成功")
return True
else:
print("您输入的成绩不正确")
return False
else:
print(f"{student_id}用户不存在")
return False
def calculate_student_avg(students, student_id):
"""计算学生平均分"""
if student_id in students:
total=students[student_id]["scores"]["math"]+students[student_id]["scores"]["chinese"]+students[student_id]["scores"]["english"]
avg = total/3
print(f"用户{students[student_id]["name"]}的平均分是{avg}")
return avg
else:
print(f"{student_id}用户不存在")
return False
calculate_student_avg(students,"001")
def calculate_subject_avg(students, subject):
"""计算科目平均分"""
pass
def search_student(students, student_id):
"""查询学生信息"""
def main():
pass
变量:局部变量和全局变量
#全局变量:再函数外部定义的变量全部是全局变量.作用范围是整个程序
#局部变量:函数内部声明的变量,作用域在本函数内部生效
# num1 = 21
#函数内部只有访问全部变量的权限,没有修改的权限
# def a():
# num1 += 20
# print(num1)
# 统计函数调用的次数
# a()
num1 = 0
def a():
global num1 #声明我要修改的是全局变量num1
num1+=1
print(num1)
a()
a()
a()
a()
#传递的是正数12的内存地址,但是由于整数时不可变的数据类型,所以,函数内部的更改,实际上是开辟了新的内存空间,改变了局部变量中num1的指向而已
#
def fn(num1):
num1+=12
print(num1) #24
num1 = 12
fn(num1)
print(num1) #12
# 12 24
def fx(list1):
list1.append("666")
print(list1) #[1,2,3,"666"]
list1=[1,2,3]
fx(list1)
print(list1) #[1,2,3]
#不可变的数据类型:整数、字符串、元组
#可变数据类型:列表、集合、字典
#如果函数内部对可变数据类型的参数进行了重新赋值,外部的原对象数据就不会更改
def reassign_list(lst):
lst = [10, 20, 30] # 让 lst 指向新列表(原列表不受影响)
print("函数内的 lst:", lst)
my_list = [1, 2, 3]
reassign_list(my_list)
print("函数外的 my_list:", my_list) #[1, 2, 3]
更多推荐
所有评论(0)