学习Python第七天

学习Python第七天

课后作业

注释部分的代码可取代他上面的代码,只是不同的写法

import random
porke_numbers = [i for i in range(2, 11)]
flower_porkes = ['A', 'J', 'Q', 'K']
porke_numbers += flower_porkes
#确定相同花色的牌种扑克牌种类,2~10、AJKQ
# print(porke_numbers)
porke_nums = []
color_porkes = ['♥', '♣', '♦', '♠']#花色,使用计算机自带输入法可以打出来
for color_porke in color_porkes:#遍历花色
    for porke_number in porke_numbers:#遍历扑克数字
        porke_nums.append(color_porke + str(porke_number))#将花色和数字组合
        # porke_nums.append(f'{color_porke}{porke_number}')
# porke_nums = [f'{color_porke}{porke_number}' for color_porke in color_porkes for porke_number in porke_numbers ]
porke_nums.append('大王')
porke_nums.append('小王')
# print(porke_nums)
random.shuffle(porke_nums)#使用打乱列表元素顺序
# print(porke_nums)
# print(len(porke_nums))
# player1.append(porke_nums[51:54])
# print(player1)
player1 = []
player2 = []
player3 = []
for i in range(0, len(porke_nums) - 3, 3):#减三将后面三张给第一个玩家
    player1.append(porke_nums[i])# 循环一次取三张扑克,所以循环步长为三
    player2.append(porke_nums[i + 1])
    player3.append(porke_nums[i + 2])
player1 += porke_nums[52:54]#,将后面三张给第一个玩家

# for _ in range(17):
#     player1.append(porke_nums.pop())
#     player2.append(porke_nums.pop())
#     player3.append(porke_nums.pop())
# player1 += porke_nums
# player1.extend(porke_nums)
player1.sort(key=lambda x: x[1:])#这里可以不知道原理,知道作用就行,后面才会学到,作用是比较发到手里扑克大小将其整理好
player2.sort(key=lambda x: x[1:])
player3.sort(key=lambda x: x[1:])
for card in player1:
    print(card, end=' ')
print()
for card in player2:#遍历玩家手里的扑克将其输出
    print(card, end=' ')
print()
for card in player3:
    print(card, end=' ')
print()

#简化输出格式

简化输出,用法循环简化代码

下面是关于炸金花的代码(17个人玩炸金花),与上面大同小异,只是简化代码,用循环简化代码

import random
porke_numbers = [i for i in range(2, 11)]
flower_porkes = ['A', 'J', 'Q', 'K']
porke_numbers += flower_porkes
# print(porke_numbers)
porke_nums = []
color_porkes = ['♥', '♣', '♦', '♠']
for color_porke in color_porkes:
    for porke_number in porke_numbers:
        porke_nums.append(color_porke + str(porke_number))
        # porke_nums.append(f'{color_porke}{porke_number}')
# porke_nums = [f'{color_porke}{porke_number}' for color_porke in color_porkes for porke_number in porke_numbers ]
porke_nums.append('大王')
porke_nums.append('小王')
# print(porke_nums)
random.shuffle(porke_nums)
players = [[] for _ in range(17)]
for _ in range(3):
    for player in players:# 遍历循环玩家,循环发牌
        player.append(porke_nums.pop())
for player in players: # 遍历循环玩家,整理发到手上的扑克
    player.sort(key=lambda x: x[1:])
    for card in player:# 循环输出玩家手里的扑克
        print(card, end=' ')
    print()

列表的运用

  • 保存五个学生的三门课程成绩
import random
# 导入包

names = ['鲁班七号', '铠', '周瑜', '孙悟空', '牛魔']
coures = ['语文', '英语', '数学']
score = [[random.randrange(60, 100) for _ in range(3)] for _ in range(5)]
# for _ in range(5)五次循环形成五个列表对应五个学生, random.randrange(60, 100) for _ in range(3)列表里面在循环三次对应三门课程,上面这个代码就相当于这两个代码的组合
for i, name in enumerate(names):
    # 遍历大列表和对应坐标
    for j, coure in enumerate(coures):
        # 遍历大列表里面的小列表和小列表对应坐标
        print(f'{name}{coure}成绩是{score[i][j]}分')
        # score[i][j]对应大列表里面小列表的元素

  • 计算每个同学平均成绩、各科最高分、最低分
import random

names = ['鲁班七号', '铠', '周瑜', '孙悟空', '牛魔']
coures = ['语文', '英语', '数学']
scores = [[random.randrange(60, 100) for _ in range(len(coures))] for _ in range(len(names))]
for i, name in enumerate(names):
    for j, coure in enumerate(coures):
        print(f'{name}{coure}成绩是{scores[i][j]}分')
    print(f'{name}的平均成绩是{sum(scores[i]) // len(coures)}分')
    print(f'{name}的最高成绩是{max(scores[i])}分,最低成绩是{min(scores[i])}')

for j, coure in enumerate(coures):
    temp = [scores[i][j] for i in range(len(names))]
    # 将每一门课程的分数放在一个列表里
    print(f'{coure}都最高分:{max(temp)}')
    print(f'{coure}都最低分:{min(temp)}')

元组

元组是不可变的容器

  • 首先是简单的了解它的工
fruit = ('apple', )
# 一元组一定要有逗号否则会被认为是一个字符串
fruits1 = ('apple', 'banana', 'grape')
print(type(fruit))
# 重复运算
print(fruits1 * 3)
# 成员运算
print('apple' in fruits1)
print('apple' not in fruits1)
# 合并运算
fruits2 = ('pitaya', 'litchi')
fruits3 = fruits2 + fruits1
print(fruits3)
# 索引和切片
print(fruits3[4], fruits3[1])
print(fruits3[2:4])
print(fruits3[1:4:2])
print(fruits3[::-1])
# 元组为二的两个功能
print(fruits3.index('apple'))
# 查找元素所在的索引
print(fruits3.count('apple'))
# 计算元素在元组中出现的次数

一定要自己敲一遍代码观察它的输出结果,才能充分了解其功能

课后作业
  • 一个列表中有很多重复元素,写一段代码去掉列表中的重复元素。

  • 有一个放整数的列表,找出列表中出现次数最多的元素。

nums = [2, 3, 4, 5, 6, 7, 8, 9, 4, 5, 5, 3, 3, 8, 6, 9]
counts = []
for i in range(len(nums)):
    for j in range(i + 1, len(nums)):
        if nums[j] == nums[i]:
            counts.append(nums[j])
for count in counts:
    nums.remove(count)
for count in counts:
    if count not in nums:
        nums.append(count)
print(nums)



nums = [2, 3, 4, 4, 4, 5, 6, 7, 8, 9, 4, 5, 5, 3, 3, 8, 6, 3, 3]
a = 0
sum = 0
for num in nums:
    if a < nums.count(num):
        a = nums.count(num)
        sum = num
print(f',出现最多的元素是{sum}输出了{a}次')

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值