一、实验目的

1、掌握函数的概念,使用场景和使用步骤;
2、掌握递归函数的概念,使用场景和使用步骤;
3、掌握常见内置函数的使用场景和使用步骤;

二、实验环境

装有Python运行环境、Pycharm平台的PC电脑一台

三、实验内容

1、编写程序,用于实现十进制转二进制、八进制、十六进制。
image.png
2、编写一个程序,实现斐波那契数列。
image.png
3、请编写程序,用于生成指定日期的日历。
image.png
4、通过导入 datetime 模块来获取昨天的日期。
image.png
5、将书中P113页的“名片管理系统”实现出来,并运行查看结果;

  1. """
  2. 5、将书中P113页的“名片管理系统”实现出来,并运行查看结果;
  3. """
  4. # 1打印功能提示
  5. def show_menu():
  6. '''这是显示菜单界面'''
  7. print('=' * 20)
  8. print('---名片管理系统---')
  9. print('1:添加一个新的名片')
  10. print('2:删除一个名片')
  11. print('3:修改一个名片')
  12. print('4:查询一个名片')
  13. print('5:显示所有的名片')
  14. print('6:退出系统')
  15. print('=' * 20)
  16. # 用来存储名片
  17. card_infors = []
  18. while True:
  19. # 2获取用户选择
  20. show_menu()
  21. num = input('请输入操作序号:')
  22. if num.isdigit():
  23. num = int(num)
  24. if num == 1:
  25. new_name = input('请输入名字:')
  26. new_qq = input('请输入QQ:')
  27. new_weixin = input('请输入微信:')
  28. new_addr = input('请输入新的住址:')
  29. # 定义一个新的字典,用来存储一个新的名片
  30. new_infor = {}
  31. new_infor['name'] = new_name
  32. new_infor['qq'] = new_qq
  33. new_infor['weixin'] = new_weixin
  34. new_infor['addr'] = new_addr
  35. # 将一个字典,添加到列表中
  36. card_infors.append(new_infor)
  37. #print(card_infors) # for test
  38. elif num == 2:
  39. del_name = input("请输入要删除的名字:")
  40. find_flag = False
  41. for line in card_infors:
  42. if line['name'] == del_name:
  43. find_flag = True
  44. card_infors.remove(line)
  45. break
  46. if find_flag:
  47. print("已删除!")
  48. else:
  49. print("输入的用户名不存在")
  50. # print(card_infors) for test
  51. elif num == 3:
  52. old_name = input('请输入要修改的姓名:')
  53. flag = 0
  54. for line in card_infors:
  55. if line['name'] == old_name:
  56. new_name = input('姓名:')
  57. # new_qq = input('年龄:')
  58. new_weixin = input('微信:')
  59. new_addr = input('住址:')
  60. line['name'] = new_name
  61. line['qq'] = new_qq
  62. line['weixin'] = new_weixin
  63. line['addr'] = new_addr
  64. flag = True
  65. break
  66. if flag:
  67. print("已修改!")
  68. else:
  69. print('输入的用户不存在!')
  70. elif num == 4:
  71. find_nmae = input("请输入要查找的姓名:")
  72. find_flag = 0 # 默认表示没有找到
  73. for temp in card_infors:
  74. if find_nmae == temp['name']:
  75. print("姓名\tQQ\t微信\t住址\t")
  76. print('%s\t%s\t%s\t%s' % (temp['name'], temp['qq'], temp['weixin'], temp['addr']))
  77. find_flag = 1 # 表示找到了
  78. break
  79. # 判断是否找到
  80. if find_flag == 0:
  81. print('没有找到')
  82. elif num == 5:
  83. print("姓名\tQQ\t微信\t住址\t")
  84. for temp in card_infors:
  85. print('%s\t%s\t%s\t%s\t' % (temp['name'], temp['qq'], temp['weixin'], temp['addr']))
  86. elif num == 6:
  87. break
  88. else:
  89. print('输入有误!请重新输入')
  90. continue
  91. print('')
  92. else:
  93. print("输入错误,请重新输入!")

image.png
6、将书中P130页的“学生管理系统”实现出来,并运行查看结果;

  1. """
  2. 5、将书中P113页的“名片管理系统”实现出来,并运行查看结果;
  3. """
  4. student_info_lst = [] # 保存所有学生的信息
  5. '''
  6. [{'name':'zs',.......},
  7. {'name':'ls',.......},
  8. ]
  9. '''
  10. def show_menu():
  11. '''这是显示菜单界面'''
  12. print('------------欢迎来到学生管理系统--------------')
  13. print('新增学员请按[1]')
  14. print('显示全部请按[2]')
  15. print('查询学员请按[3]')
  16. print('退出系统请按[0]')
  17. def add_student():
  18. '''这是新增学员功能'''
  19. print('-------------这是新增学员功能----------------')
  20. name = input('请输入姓名:')
  21. age = input('请输入年龄:')
  22. gender = input('请输入性别:')
  23. tel = input('请输入手机号码:')
  24. # print(name, age, gender, tel)
  25. # 将用户输入的信息保存到一个字典中
  26. dic = {}
  27. dic['name'] = name
  28. dic['age'] = age
  29. dic['gender'] = gender
  30. dic['tel'] = tel
  31. # print(dic)
  32. # 注意:将用户的信息保存到一个全局变量 student_info_lst 中
  33. # 列表中,让其他功能使用列表中的数据
  34. student_info_lst.append(dic)
  35. # print(lst)
  36. def alignment(s, space):
  37. '''动态获取长度'''
  38. s1 = s.encode('gbk')
  39. lenght = len(s1)
  40. space = space - lenght
  41. s = s + space * ' '
  42. return s
  43. def show_all_student():
  44. print('-----------显示所有的学员功能---------------')
  45. if not student_info_lst:
  46. print('还没有学员呢,请添加学员')
  47. return
  48. # 显示学员信息
  49. # print('name\tage\tgender\tel')
  50. # print('name', 16 * ' ', 'age', 17 * ' ', 'gender', 15 * ' ', 'tel')
  51. name = alignment('name', 15)
  52. age = alignment('age', 15)
  53. gender = alignment('gender', 15)
  54. tel = alignment('tel', 15)
  55. print(name, age, gender, tel)
  56. for dic in student_info_lst:
  57. name = dic['name']
  58. age = dic['age']
  59. gender = dic['gender']
  60. tel = dic['tel']
  61. # print('{}\t{}\t{}\t{}'.format(name, age, gender, tel))
  62. # print(name, (20 - len(name)) * ' ', age, (20 - len(name)) * ' ', gender, (20 - len(name)) * ' ', tel)
  63. name = alignment(dic['name'], 15)
  64. age = alignment(dic['age'], 15)
  65. gender = alignment(dic['gender'], 15)
  66. tel = alignment(dic['tel'], 15)
  67. print('{}\t{}\t{}\t{}'.format(name, age, gender, tel))
  68. def modify_student(old_value, msg):
  69. new_value = input(msg)
  70. if new_value.strip():
  71. '''msg有内容'''
  72. return new_value
  73. else:
  74. '''msg有内容'''
  75. return old_value
  76. def deal_student(dic):
  77. '''修改和删除学员信息'''
  78. action_str = input('【1】修改 【2】删除 【0】返回上一级菜单,请选择要执行的操作:')
  79. if action_str == '1':
  80. '''修改学员信息'''
  81. # name = input('请输入姓名:')
  82. # age = input('请输入年龄:')
  83. # gender = input('请输入性别:')
  84. # tel = input('请输入手机号码:')
  85. name = modify_student(dic['name'], '请输入姓名:')
  86. age = modify_student(dic['age'], '请输入年龄:')
  87. gender = modify_student(dic['gender'], '请输入性别:')
  88. tel = modify_student(dic['tel'], '请输入手机号码:')
  89. dic['name'] = name
  90. dic['age'] = age
  91. dic['gender'] = gender
  92. dic['tel'] = tel
  93. elif action_str == '2':
  94. '''删除该学员'''
  95. student_info_lst.remove(dic)
  96. # del student_info_lst[dic]
  97. print('-------------删除成功了--------------')
  98. elif action_str == '0':
  99. '''返回上一级菜单'''
  100. pass
  101. def search_student_by_name():
  102. print('--------------欢迎来到查询学员功能----------------')
  103. if student_info_lst:
  104. name = input('请输入要查询的学生的姓名:')
  105. for dic in student_info_lst: # 获取所有学员
  106. if dic['name'] == name: # 比较学员姓名
  107. # print('name\tage\tgender\tel')
  108. # print('name', 16 * ' ', 'age', 17 * ' ', 'gender', 15 * ' ', 'tel')
  109. name = alignment('name', 15)
  110. age = alignment('age', 15)
  111. gender = alignment('gender', 15)
  112. tel = alignment('tel', 15)
  113. print(name, age, gender, tel)
  114. name = dic['name']
  115. age = dic['age']
  116. gender = dic['gender']
  117. tel = dic['tel']
  118. # print('{}\t{}\t{}\t{}'.format(dic['name'], dic['age'], dic['gender'], dic['tel']))
  119. # print(name, (20 - len(name)) * ' ', age, (20 - len(name)) * ' ', gender, (20 - len(name)) * ' ', tel)
  120. name = alignment(dic['name'], 15)
  121. age = alignment(dic['age'], 15)
  122. gender = alignment(dic['gender'], 15)
  123. tel = alignment(dic['tel'], 15)
  124. print('{}\t{}\t{}\t{}'.format(name, age, gender, tel))
  125. # 修改学员信息
  126. # 需要将学员的信息传递到函数
  127. deal_student(dic)
  128. break
  129. else:
  130. print('have not this stuent')
  131. # add_student()
  132. else:
  133. print('have not atudent,please add student')
  134. add_student()
  135. while True:
  136. show_menu()
  137. action_str = input('请输入您要选的数字:')
  138. lst = ['0', '1', '2', '3']
  139. if action_str in lst:
  140. if action_str == '1':
  141. '''添加新增学员'''
  142. add_student()
  143. elif action_str == '2':
  144. '''显示所有学员信息'''
  145. show_all_student()
  146. elif action_str == '3':
  147. '''查询学员'''
  148. search_student_by_name()
  149. elif action_str == '0':
  150. '''退出系统'''
  151. print('三位慢走,欢迎下次光临')
  152. break
  153. else:
  154. print('---------输错了,请重新输入------------')

image.png
7、有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
image.png

心得体会

学习了python函数的基本用法