一、实验目的

1、掌握列表的概念,使用场景和使用步骤;
2、掌握元组的概念,使用场景和使用步骤;
3、掌握字典的概念,使用场景和使用步骤;

二、实验环境

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

三、实验内容

1、用列表实现:输入三个整数x,y,z,请把这三个数由小到大输出。
image.png
2、现有一个班级的学生数学成绩list(可随机生成40名同学的数学成绩),要求统计及格人的平均成绩。

  1. """
  2. 2、现有一个班级的学生数学成绩list(可随机生成40名同学的数学成绩),要求统计及格人的平均成绩。
  3. """
  4. import random
  5. def get_level(score):
  6. if 90 < score <= 100:
  7. return '非常优秀'
  8. elif 80 < score <= 90:
  9. return '优秀'
  10. elif 60 < score <= 80:
  11. return '及格'
  12. else:
  13. return '不及格'
  14. def main():
  15. for i in range(40):
  16. score = random.randint(1, 100)
  17. level = get_level(score)
  18. print("成绩: %s, 等级: %s" % (score, level))
  19. if __name__ == "__main__":
  20. main()

image.png
3、编写程序,输入一个大于 2 的自然数,然后输出小于该数字的所有素数组成的列表;
image.png
4、求一个3*3矩阵主对角线元素之和。
image.png
5、计算两个矩阵相加。
image.png
6、利用列表实现石头剪刀布游戏;

  1. """
  2. 6、利用列表实现石头剪刀布游戏;
  3. """
  4. import random
  5. allList=['石头','剪刀','布']
  6. winList=[['石头','剪刀'],['剪刀','布'],['布','石头']] #定义胜的情况
  7. chum=-1
  8. prompt='''
  9. 欢迎参加游戏,请选择对应的数字
  10. 0 石头,1 剪刀,2 布,3 我不想玩了
  11. '''
  12. while True:
  13. chnum=input(prompt)
  14. if chnum not in['0','1','2','3']:
  15. print("无效的选择,请选择0/1/2/3")
  16. continue
  17. if chnum=='3':
  18. break
  19. cchoice=random.choice(allList) #电脑随机选择'石头','剪刀','布'
  20. uchoice=allList[int(chnum)]
  21. print("您选择了:{}\n计算机选择了:{}".format(uchoice,cchoice))
  22. if uchoice==cchoice:
  23. print("平局")
  24. elif [uchoice,cchoice] in winList: #胜的情况
  25. print("你赢了!!!")
  26. else:
  27. print("你输了!!!")
  28. print("游戏结束!")

image.png

7、编写程序,模拟抓狐狸小游戏。假设一共有一排 5 个洞口,小狐狸最开始的时候在其中一个洞口,然后玩家随机打开一个洞口,如果里面有狐狸就抓到了。如果洞口里没有狐狸就第二天再来抓,但是第二天狐狸会在玩家来抓之前跳到隔壁洞口里。

  1. """
  2. 7、编写程序,模拟抓狐狸小游戏。假设一共有一排 5 个洞口,小狐狸最开始的时候在其中一个洞口,然后玩家随机打开一个洞口,如果里面有狐狸就抓到了。如果洞口里没有狐狸就第二天再来抓,但是第二天狐狸会在玩家来抓之前跳到隔壁洞口里。
  3. """
  4. import random
  5. def sj():
  6. csj = random.randint(1, 5)
  7. return csj
  8. a = sj() #小狐狸最开始的时候在其中一个洞口a
  9. Count = 0
  10. while True:
  11. # for i in range(5):
  12. x = int(input('请输入要打开的洞口编号(1-5),输入6退出:'))
  13. if x not in [0, 1, 2, 3, 4, 5]:
  14. print("无效的选择,请选择0/1/2/3/4/5")
  15. continue
  16. if(x==6):
  17. break
  18. Count += 1
  19. if x == a: #玩家随机打开一个洞口,抓到了
  20. print('玩家胜利,您共猜了:%d次'%(Count))
  21. break
  22. else:
  23. print("选择了{},未猜中".format(x))
  24. a += random.choice([-1, 1]) #跳到隔壁洞口

image.png

8、编写程序,模拟打字练习程序的成绩评定。假设 origin 为原始内容,userInput 为用户练习时输入的内容,要求用户输入的内容长度不能大于原始内容的长度,如果对应位置的字符一致则认为正确,否则判定输入错误。最后成绩为:正确的字符数量/原始字符串长度,按百分制输出,要求保留 2 位小数。

  1. """
  2. 8、编写程序,模拟打字练习程序的成绩评定。假设 origin 为原始内容,userInput 为用户练习时输入的内容,要求用户输入的内容长度不能大于原始内容的长度,
  3. 如果对应位置的字符一致则认为正确,否则判定输入错误。最后成绩为:正确的字符数量/原始字符串长度,按百分制输出,要求保留 2 位小数。
  4. """
  5. import random
  6. import string
  7. order = 'y'
  8. while (order == 'y' or order == 'Y'):
  9. print('----------模拟打字练习程序----------')
  10. original = ''.join(random.sample('abcdefghijklmnopqrstuvwxyz', 10)) # 随机生成由10个小写英文字符构成的字符串,字符数可改变
  11. print('输出:' + original)
  12. userInput = input('输入:')
  13. combination = list(zip(original, userInput))
  14. true_word = 0.0 #记录正确的字符数
  15. # 统计正确字符数
  16. for word in combination:
  17. if word[0] == word[1]:
  18. true_word += 1
  19. # 评定等级
  20. score = round(true_word / len(original), 3) * 100
  21. if (score >= 90):
  22. grade = '优'
  23. elif (score >= 80):
  24. grade = '良'
  25. elif (score >= 70):
  26. grade = '中'
  27. elif (score >= 60):
  28. grade = '及格'
  29. else:
  30. grade = '不及格'
  31. print('分数:' + str(score) + '分\n成绩等级:' + grade)
  32. order = input('\n是否继续练习(输入Y(y)orN(n)):')
  33. print('退出程序!')

image.png

9、利用字典实现金庸小说中的大侠个人信息查询程序(至少得有三个人);
实验3  列表、元组和字典的使用训练 - 图9

  1. """
  2. 9、利用字典实现金庸小说中的大侠个人信息查询程序(至少得有三个人);
  3. """
  4. people={
  5. '乔峰':{
  6. '绝技':'降龙十八掌',
  7. '门派':'丐帮'
  8. },
  9. '张无忌':{
  10. '绝技': '乾坤大挪移',
  11. '门派': '明教'
  12. },
  13. '令狐冲': {
  14. '绝技': '乾坤大挪移',
  15. '门派': '华山派'
  16. }
  17. }
  18. labels={
  19. '绝技': '行走在江湖的绝技',
  20. '门派': '所在的门派'
  21. }
  22. #初始化名字
  23. name =input ('请输入大侠的名字:')
  24. #获取选项
  25. r=input ('请选择大侠的绝技(q)或者门派(a):')
  26. #获取键
  27. if r=='q':
  28. y='绝技'
  29. if r =='a':
  30. y='门派'
  31. #查找
  32. if name in people:
  33. print("{}大侠{}是{}".format(name,labels[y],people[name][y]))

image.png

10、将一个N=10个元素的列表转换为字典。
image.png

心得体会

练习了python的列表,元组和字典的基本使用