实验名称:组合数据类型

大家好!欢迎收听你的月亮我的心!我是肖老师!好久不见!

目录

一、实验目的:

二、实验环境:

三、实验步骤:

四、实验结果:

1.已知列表li_one=[1,2,1,2,3,5,4,3,5,7,4,7,8],删除列表中重复数据

2.已知列表li_num1=[5,5,2,7]和li_num2=[3,6], 将这两个列表合并为一个列表,并将合并后的列表中的元素按降序排列

3.学校招聘了8名新教师,学校有3个空闲办公室,编写程序实现将8名教师随机分配办公室的功能。如下图:

4.十大歌手评选(page64)

5.分类统计字符个数

编写程序,用户输入一个字符串,以回车结束,利用字典统计其中字母和数字出现的次数(回车符代表结束)。输入格式是一个以回车结束的字符串,例如输入abc1ab,输出{'a': 2, 'b': 2, 'c': 1, '1': 1}。

6.计票机制(page68)

7.完成斗地主发牌看牌操作(要求看牌时排序展示)

五、实验心得:


一、实验目的:

1.已知列表li_one=[1,2,1,2,3,5,4,3,5,7,4,7,8],删除列表中重复数据

2.已知列表li_num1=[5,5,2,7]和li_num2=[3,6], 将这两个列表合并为一个列表,并将合并后的列表中的元素按降序排列

3.学校招聘了8名新教师,学校有3个空闲办公室,编写程序实现将8名教师随机分配办公室的功能。如下图:

4.十大歌手评选(page64)

5.分类统计字符个数

编写程序,用户输入一个字符串,以回车结束,利用字典统计其中字母和数字出现的次数(回车符代表结束)。输入格式是一个以回车结束的字符串,例如输入abc1ab,输出{'a': 2, 'b': 2, 'c': 1, '1': 1}。

6.计票机制(page68)

7.完成斗地主发牌看牌操作(要求看牌时排序展示)

二、实验环境:

安装pycharm2023.3.4 

安装适配的jdk

三、实验步骤:

1.已知列表li_one=[1,2,1,2,3,5,4,3,5,7,4,7,8],删除列表中重复数据

  • 使用列表的set函数,删除重复数据
  • 输出重新筛选后的列表

2.已知列表li_num1=[5,5,2,7]和li_num2=[3,6], 将这两个列表合并为一个列表,并将合并后的列表中的元素按降序排列

  • 创一个新列表=两个列表相加
  • Reverse这个新列表
  • 输出结果

3.学校招聘了8名新教师,学校有3个空闲办公室,编写程序实现将8名教师随机分配办公室的功能。如下图:

  • 先创建老师对象
  • 再创建教室
  • 随机分配需要调用random函数
  • 将随机分配的老师加入教室列表
  • 输出结果

4.十大歌手评选(page64)

  • 使用列表接收评委的分数
  • 减去一个最高分,减去一个最低分
  • 总分除以8得到的就是选手的平均分
  • 输出结果
  • 分类统计字符个数

5.编写程序,用户输入一个字符串,以回车结束,利用字典统计其中字母和数字出现的次数(回车符代表结束)。输入格式是一个以回车结束的字符串,例如输入abc1ab,输出{'a': 2, 'b': 2, 'c': 1, '1': 1}。

  • 创建一个空字典,用于存储字母和数字的出现次数
  • 使用input函数获取用户输入的字符串,并将其保存到一个变量中
  • 使用for循环遍历字符串中的每个字符
  • 在循环中,使用isalpha()函数判断字符是否为字母,使用isdigit()函数判断字符是否为数字
  • 如果字符是字母或数字,则在字典中对应的键的值加1。如果字典中不存在该键,则将该键添加到字典中,并将值初始化为1
    • 循环结束后,输出最终的字典结果

6.计票机制(page68)

  • 创建一个空字典,用来记录票数
  • 输入候选人的名字
  • 进行计票排序
  • 输出结果

7.完成斗地主发牌看牌操作(要求看牌时排序展示)

  • 副牌(52+2=54张)
  • 有大小王,用提供的国王和皇后的符号表示大小王
  • 54张牌发给3个玩家,每人17张牌,并有3张底牌。
  • 输出3个玩家的牌,按照由小到大,黑红梅方的顺序。
  • 输出3张底牌
  • 输出每个玩家有几个炸弹(4张面值一样的牌,或者大小王在一起,为一个炸弹)

四、实验结果:

1.已知列表li_one=[1,2,1,2,3,5,4,3,5,7,4,7,8],删除列表中重复数据

#1.已知列表li_one=[1,2,1,2,3,5,4,3,5,7,4,7,8],删除列表中重复数据
# set()函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
s = [1,2,1,2,3,5,4,3,5,7,4,7,8]
print(set(s))

2.已知列表li_num1=[5,5,2,7]和li_num2=[3,6], 将这两个列表合并为一个列表,并将合并后的列表中的元素按降序排列

# 2.已知列表li_num1=[5,5,2,7]和li_num2=[3,6], 将这两个列表合并为一个列表,并将合并后的列表中的元素按降序排列
li_num1=[5,5,2,7]
li_num2=[3,6]
li_num3 = li_num1 + li_num2
li_num4 =sorted(li_num3)
li_num4.reverse()
print(li_num4)

3.学校招聘了8名新教师,学校有3个空闲办公室,编写程序实现将8名教师随机分配办公室的功能。如下图:

# 学校招聘了8名新教师,学校有3个空闲办公室,编写程序实现将8名教师随机分配办公室的功能。
import random
teachers = ['孙老师','何老师','黄老师','肖老师','林老师','汤老师','陈老师','杨老师']
offices = [[], [], []]
for name in teachers:
    num = random.randint(0, 2)
    offices[num].append(name)
print(f"三个办公室的随机分配情况是;", offices)
i = 1
for office in offices:
    print(f"办公室{i}的人数是{len(office)},老师分别是:  ", end='')
    for name in office:
        print(name.center(5), end='\t')
        i += 1
    print()
print('_' * 100)

4.十大歌手评选(page64)

# 4.十大歌手评选(page64)
list = []
sum = 0
for i in range(1, 11):
    score = (int(input(f"第{i}位评委评分:")))
    list.append(score)
list.sort()

print('去掉最低分:', list[0])
print('去掉最高分:', list[-1])
list.remove(list[0])
list.remove(list[-1])
for j in list:
    sum = sum + j
average = sum / 8
print('选手最终得分为:', average)

5.分类统计字符个数

编写程序,用户输入一个字符串,以回车结束,利用字典统计其中字母和数字出现的次数(回车符代表结束)。输入格式是一个以回车结束的字符串,例如输入abc1ab,输出{'a': 2, 'b': 2, 'c': 1, '1': 1}。

def count_chars_and_digits(string):
    count_dict = {}
    for char in string:
        if char.isalpha() or char.isdigit():
            count_dict[char] = count_dict.get(char, 0) + 1
    return count_dict

input_string = input("请输入一个字符串:")
result = count_chars_and_digits(input_string)
print(result)

6.计票机制(page68)

#计票程序
dic = {}

s = input('请输入候选人的姓名(输入“#”结束):')

while s != '#':
    dic[s] = dic.get(s, 0) + 1  # 统计出现的次数

    s = input('请输入候选人的姓名(输入“#”结束):')

print('候选人及得票数如下:')

for key in dic.keys():
    print(key, str(dic.get(key)) + '票')

7.完成斗地主发牌看牌操作(要求看牌时排序展示)

#斗地主发牌
import random

player_one = []
player_two = []
player_three = []  # 三个用户
under_card = []  # 底牌
card = []  # 新牌
for i in range(1, 14):
    if i == 1:
        i = "A"
    elif i == 11:
        i = "J"
    elif i == 12:
        i = "Q"
    elif i == 13:
        i = "K"
    card.append(str(i) + "♠")
    card.append(str(i) + "♣")
    card.append(str(i) + "♦")
    card.append(str(i) + "♥")  # 生成牌

card.append("red_King")
card.append("black_King")  # 添加大小王

# 洗牌,多洗几次
for i in range(3):
    random.shuffle(card)

k = 0
while k < 51:
    player_one.append(card[k])
    player_two.append(card[k + 1])
    player_three.append(card[k + 2])
    k = k + 3

print("底牌是: ")
under_card = card[51: 54]
print(under_card)

# 把牌给地主!
dz = eval(input("请输入地主是几号玩家?"))
if dz == 1:
    player_one = player_one + under_card
elif dz == 2:
    player_two = player_two + under_card
elif dz == 3:
    player_three = player_three + under_card

print("一号玩家的牌是:")
print(sorted(player_one))
print("二号玩家的牌是:")
print(sorted(player_two))
print("三号玩家的牌是:")
print(sorted(player_three))

自己截图放结果!!!!!

五、实验心得:

  1. 要迎难而上,不能有畏难心理
  2. 代码要多敲
  3. 敲到实在想不出也不要放弃,说不定离成功就差一步
  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值