递归实现
   1、有五个学⽣坐在⼀起,问第五个⼈多少岁?答⽐第四个⼤
 2
 岁,第四个⼈说它⽐第三个⼈⼤
 2
 岁,
 ,...
 第⼀个⼈说他
 10
 岁。请写⼀个递归函数计算第
 5
 个学⽣多少岁 
 
   
    - 
     
      
     
     
      
       def age(num):
      
     
- 
     
      
     
     
          
       if num == 
       1:
      
     
- 
     
      
     
     
              
       return 
       10
      
     
- 
     
      
     
     
          
       return age(num
       -1) + 
       2
      
     
- 
     
      
     
     
      
       print(age(
       5))   结果
       18
      
     
    2、某班期末考试科⽬为数学和计算机,有最多不超过
  30
  ⼈参加考试。学⽣的信息包括学号、姓名。
 
 
 
  考试后要求: 
 
 
 
  (
  1
  )计算每个学⽣的总分和平均分; 
 
 
 
  (
  2
  )按总分 
  成绩由⾼到低排出成绩的名次; 
 
 
 
  (
  3
  )打印出名次表,表格内包括学⽣姓名、学
  号、各科分数、总分和平均分; 
 
 
 
  (
  4
  )任意输⼊⼀个学号,能够查找出该学⽣在班级中的排名及其考试分数 
 
 
 
  编写要求: 
 
 
 
    (1) 
  要对⽤户输⼊进⾏验证,如果输⼊的不是
  0-4
  显示错误,然后继续输⼊
 
 
 
    
  (2) 
  要能够连续不断的进⾏选择 
 
 
 
    (3) 
  每⼀项功能都要封装函数完成,函数单独放
  到⼀个模块中 
 
 
 
    (4) 
  菜单及其⽤户选择的处理放到主模块中。 
 
 
 
    (5) 
  学⽣数据保存到⽂件
 
 
 
 主程序文件 index.py
 
   
    - 
     
      
     
     
      
       student = []
      
     
- 
     
      
     
     
      
       from menu 
       import menu,user_choice,show_over
      
     
- 
     
      
     
     
      
       from Input 
       import inf_input,stu_sort,inf_output,inf_index
      
     
- 
     
      
     
     
      
       def main():
      
     
- 
     
      
     
     
          
       while 
       True:
      
     
- 
     
      
     
     
      
               menu()
      
     
- 
     
      
     
     
      
               choice = user_choice()
      
     
- 
     
      
     
     
              
       if choice == 
       0:
      
     
- 
     
      
     
     
      
                   show_over()
      
     
- 
     
      
     
     
              
       if choice == 
       1:
      
     
- 
     
      
     
     
      
                   inf_input(student,
       3)
      
     
- 
     
      
     
     
              
       if choice == 
       2:
      
     
- 
     
      
     
     
      
                   inf_output(student)
      
     
- 
     
      
     
     
              
       if choice == 
       3:
      
     
- 
     
      
     
     
      
                   stu_sort(student)
      
     
- 
     
      
     
     
      
                   inf_index(student)
      
     
- 
     
      
     
     
              
       if choice == 
       4:
      
     
- 
     
      
     
     
      
                   stu_sort(student)
      
     
- 
     
      
     
     
      
                   inf_output(student)
      
     
- 
     
      
     
     
       
      
     
- 
     
      
     
     
      
       if __name__ == 
       '__main__':
      
     
- 
     
      
     
     
      
           main()
      
     
实现0-4函数功能文件 Input.py
   
    - 
     
      
     
     
      
       def inf_input(student,num):
      
     
- 
     
      
     
     
          
       """
      
     
- 
     
      
     
     
      
        :param student: 存放学生信息的列表
      
     
- 
     
      
     
     
      
        :param num: 学生的个数
      
     
- 
     
      
     
     
      
        :return: 无
      
     
- 
     
      
     
     
      
        """
      
     
- 
     
      
     
     
          
       for i 
       in range(num):
      
     
- 
     
      
     
     
      
               student2 = {}
      
     
- 
     
      
     
     
      
               student1 = input(
       f"请输⼊第{i+1}个学⽣的信息(按姓名、学号、数学成绩、计算机成绩输⼊,空格隔开):").split(
       " ")
      
     
- 
     
      
     
     
      
               student2[
       '姓名'] = student1[
       0]
      
     
- 
     
      
     
     
      
               student2[
       '学号'] = student1[
       1]
      
     
- 
     
      
     
     
      
               student2[
       '数学成绩'] = float(student1[
       2])
      
     
- 
     
      
     
     
      
               student2[
       '计算机成绩'] = float(student1[
       3])
      
     
- 
     
      
     
     
      
               student2[
       '总成绩'] = float(student1[
       2]) + float(student1[
       3])
      
     
- 
     
      
     
     
      
               student2[
       '平均成绩'] = (float(student1[
       2]) + float(student1[
       3])) / 
       2
      
     
- 
     
      
     
     
      
               student.append(student2)
      
     
- 
     
      
     
     
       
      
     
- 
     
      
     
     
       
      
     
- 
     
      
     
     
      
       def stu_sort(student):
      
     
- 
     
      
     
     
          
       """
      
     
- 
     
      
     
     
      
        :param student: 学生信息列表
      
     
- 
     
      
     
     
      
        :return: 无
      
     
- 
     
      
     
     
      
        """
      
     
- 
     
      
     
     
      
           student.sort(key=
       lambda student:student[
       '总成绩'],reverse=
       True)
      
     
- 
     
      
     
     
       
      
     
- 
     
      
     
     
      
       def inf_output(student):
      
     
- 
     
      
     
     
          
       """
      
     
- 
     
      
     
     
      
        输出学生信息
      
     
- 
     
      
     
     
      
        :param student:
      
     
- 
     
      
     
     
      
        :return:
      
     
- 
     
      
     
     
      
        """
      
     
- 
     
      
     
     
      
           fm1 = 
       "{:^10}\t{:^10}\t{:<10}\t{:<10}\t{:<10}\t{:<10}"
      
     
- 
     
      
     
     
      
           fm2 = 
       "{:^10}\t{:^10}\t{:^10}\t{:^14}\t{:^12}\t{:^14}"
      
     
- 
     
      
     
     
      
           f2 = fm1.format(
       "姓名",
       "学号",
       "数学成绩",
       "计算机成绩",
       "总成绩",
       "平均成绩")
      
     
- 
     
      
     
     
      
           print(f2)
      
     
- 
     
      
     
     
          
       for i 
       in range(len(student)):
      
     
- 
     
      
     
     
      
               print(fm2.format(student[i][
       '姓名'],
      
     
- 
     
      
     
     
      
                                student[i][
       '学号'],
      
     
- 
     
      
     
     
      
                                student[i][
       '数学成绩'],
      
     
- 
     
      
     
     
      
                                student[i][
       '计算机成绩'],
      
     
- 
     
      
     
     
      
                                student[i][
       '总成绩'],
      
     
- 
     
      
     
     
      
                                student[i][
       '平均成绩']))
      
     
- 
     
      
     
     
       
      
     
- 
     
      
     
     
      
       def inf_index(student):
      
     
- 
     
      
     
     
          
       """
      
     
- 
     
      
     
     
      
        按学号查找学生信息
      
     
- 
     
      
     
     
      
        :param student:
      
     
- 
     
      
     
     
      
        :return:
      
     
- 
     
      
     
     
      
        """
      
     
- 
     
      
     
     
      
           fm1 = 
       "{:^10}{:^10}\t{:^10}\t{:<10}\t{:<10}\t{:<10}\t{:<10}"
      
     
- 
     
      
     
     
      
           fm2 = 
       "{:^10}\t{:^10}\t{:^10}\t{:^10}\t{:^14}\t{:^12}\t{:^14}"
      
     
- 
     
      
     
     
      
           ID = input(
       "请输入你要查询的学号:")
      
     
- 
     
      
     
     
          
       for i 
       in range(len(student)):
      
     
- 
     
      
     
     
              
       if ID == student[i][
       '学号']:
      
     
- 
     
      
     
     
      
                   print(fm1.format(
       "名次",
       "姓名",
       "学号",
       "数学成绩",
       "计算机成绩",
       "总成绩",
       "平均成绩"))
      
     
- 
     
      
     
     
      
                   stu = fm2.format(i+
       1, student[i][
       '姓名'],
      
     
- 
     
      
     
     
      
                                    student[i][
       '学号'],
      
     
- 
     
      
     
     
      
                                    student[i][
       '数学成绩'],
      
     
- 
     
      
     
     
      
                                    student[i][
       '计算机成绩'],
      
     
- 
     
      
     
     
      
                                    student[i][
       '总成绩'],
      
     
- 
     
      
     
     
      
                                    student[i][
       '平均成绩'])
      
     
- 
     
      
     
     
      
                   print(
       "查询成功,该学生的信息为:")
      
     
- 
     
      
     
     
      
                   print(stu)
      
     
- 
     
      
     
     
                  
       break
      
     
- 
     
      
     
     
          
       else:
      
     
- 
     
      
     
     
      
               print(
       "没有该学生的信息")
      
     
- 
     
      
     
     
       
      
     
- 
     
      
     
     
      
       if __name__ == 
       '__main__':   
       # 只在本模块调用
      
     
- 
     
      
     
     
      
               student = []
      
     
- 
     
      
     
     
      
               inf_input(
       3)
      
     
用户界面 menu.py
   
    - 
     
      
     
     
      
       def menu():
      
     
- 
     
      
     
     
      
           print(
       """
      
     
- 
     
      
     
     
      
        =====欢迎使用学生信息管理系统====
      
     
- 
     
      
     
     
      
        [1] 学生信息输入
      
     
- 
     
      
     
     
      
        [2] 学生信息输出
      
     
- 
     
      
     
     
      
        [3] 查找学生信息
      
     
- 
     
      
     
     
      
        [4] 成绩排序
      
     
- 
     
      
     
     
      
        [0] 退出
      
     
- 
     
      
     
     
      
        """)
      
     
- 
     
      
     
     
       
      
     
- 
     
      
     
     
      
       def user_choice():
      
     
- 
     
      
     
     
          
       while 
       True:
      
     
- 
     
      
     
     
      
               choice = int(input(
       "请输入你的选择:"))
      
     
- 
     
      
     
     
              
       if choice < 
       0 
       or choice > 
       4:
      
     
- 
     
      
     
     
      
                   print(
       "请输入正确的选项")
      
     
- 
     
      
     
     
              
       else:
      
     
- 
     
      
     
     
                  
       return choice
      
     
- 
     
      
     
     
       
      
     
- 
     
      
     
     
      
       def show_over():
      
     
- 
     
      
     
     
      
           print(
       "="*
       30)
      
     
- 
     
      
     
     
      
           print(
       "\t\t感谢你的使用")
      
     
- 
     
      
     
     
      
           print(
       "="*
       30)
      
     
- 
     
      
     
     
      
           exit(
       0)
      
     
执行结果

 
 
转载:https://blog.csdn.net/c727657851/article/details/106479565
查看评论
					