210126课程内容整理

210126课程内容整理

今天听课内容太难,后期详解

赌博游戏

'''CRAPS赌博游戏
玩家摇两颗色子,如果第一次摇出了7点或11点,玩家胜;
如果摇出了2点、3点或12点,庄家胜;
其他情况不分胜负,游戏继续。
玩家重新摇色子,如果摇出了第一次摇的点数,玩家胜;
如果摇出了7点,庄家胜;
其他情况游戏继续,直到分出胜负。
'''

import random
first_point = random.randint(1, 6) + random.randint(1, 6)
print(f'玩家摇出了{first_point}点')
# --> print('玩家摇出了‘,first_point,’点‘)
if first_point in [7, 11]:
# -->  if first_point == 7 or first_point == 11:
    print('玩家胜')
elif first_point in [2, 3, 12]:
#  --> first_point==2 or first_point==3 or first_point==12
    print('庄家胜')
else:
    while True:
        current_point = random.randint(1, 6) + random.randint(1, 6)
        print(f'玩家摇出了{current_point}点')
        if current_point == first_point:
            print('玩家胜')
            break
        elif current_point == 7:
            print('庄家胜')
            break
# 加入筹码,做成小游戏
import random
money = 1000
while money > 0:
    print(f'玩家总资产:{money}元')
    debt = int(input('请下注:'))
    while debt <= 0 or debt > money:
        debt = int(input('请下注:'))
    first_point = random.randint(1, 6) + random.randint(1, 6)
    print(f'玩家摇出了{first_point}点')
# --> print('玩家摇出了‘,first_point,’点‘)
    if first_point in [7, 11]:
# -->  if first_point == 7 or first_point == 11:
        print('玩家胜')
        money += debt
    elif first_point in [2, 3, 12]:
# --> first_point==2 or first_point==3 or first_point==12
        print('庄家胜')
        money -= debt
    else:
        while True:
            current_point = random.randint(1, 6) + random.randint(1, 6)
            print(f'玩家摇出了{current_point}点')
            if current_point == first_point:
                print('玩家胜')
                money += debt
                break
            elif current_point == 7:
                print('庄家胜')
                money -= debt
                break
print('玩家破产,游戏结束')
摇色子游戏
'''
把一颗色子摇6000次,统计每一面出现的次数
'''
# 列表的重复运算
import random
fs = [0] * 6  # == fs = [0, 0, 0, 0, 0, 0]
# ==  f1 = 0;f2 = 0;f3 = 0;f4 = 0;f5 = 0;f6 = 0
for _ in range(6000):
    face = random.randint(1, 6)
    # 获取列表元素的索引运算
    fs[face - 1] += 1
# print(fs)  == [1000, 1000, 960, 965, 1031, 1044]
for i in range(1, 7):
    print(f'{i}点出现了{fs[i-1]}次')

# 软硬件中存在问题和缺陷bug     -->解除bug==debug调试

#### 重复列表

# 在列表里放[1,100]个数
# 列表生成式(推导式):创建列表的一种字面量语法
a = [x for x in range(1, 101)]
print(a)
# [1, 100]之间的偶数
b = [x for x in range(2, 101, 2)]
print(b)
c = [x for x in range(1, 101) if x % 3 == 0 or x % 5 ==0]
print(c)
双色球随机数
'''
双色球:6个红色球+1个蓝色球
红色球:1~33选6个(不重复)球
蓝色球:1~16选1个球
实现一个双色球随机选号的程序
'''
import random

n = int(input('机选几注: '))
for _ in range(n):
    red = [x for x in range(1, 34)]
    # 通过random模块的sample函数实现无放回随机抽样
    selected_balls = random.sample(red, 6)
'''
    selected_balls = []
    for _ in range(6):
        index = random.randint(0, len(red) - 1)
        selected_balls.append(red.pop(index))
'''
# 给列表元素排序(默认升序,从小到大)
selected_balls.sort()
blue = random.randint(1, 16)
selected_balls.append(blue)
for ball in selected_balls:
    # 格式化输出整数,不够两位左边补0
    print(f'{ball:0>2d}', end=' ')
Josephu约瑟夫环
'''
Josephu约瑟夫环问题
有15个男人和15个女人乘船在海上遇险,
为了让一部分人活下来,不得不将其中15人扔进海里,
有人想了一个办法让大家围成一圈,由某个人开始从1报数,
报到9的人就扔到海里,后面的人接着从1开始报数,
报到9的人继续扔到海里,直到将15个人扔到海里,
最后15个女人幸免于难,15个男人都被扔到了海里
问这些人最开始怎么站的,哪些位置是男人,哪些位置是女人?
'''
'''index = 0  下标
counter = 0 # 计数器记录有多少个人被扔到海里了
num = 0    需要报的数
'''
persons = [True] * 30
index, counter, num = 0, 0, 0
while counter < 15:
    if persons[index]:
        num += 1
        if num == 9:
            persons[index] = False
            counter += 1
            num = 0
    index += 1
    index %= 30   # 确保index的值保持在0~29之间
for persons in persons:
    # 三元条件运算法
    print('女'if persons else'男', end=' ')
print()
'''
== if person:
        print('女',end=' ')
    else:
        print('女',end=' ')
'''

微信群发消息

import itchat
itchat.auto_login()
friends_list = itchat.get_friends()
print(friends_list[0])
friends_list = friends_list[1:]
for friend in friends_list:
    print(friend['UserName'])
    print(friend['NickName'])
    print(friend['Signature'])
    print(friend['City'])
    itchat.send_msg('消息内容', friend['UserName'])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值