栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python自动抢课(python抢课脚本)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python自动抢课(python抢课脚本)

实例

谁能赢得最后的糖块?

第一步:如果现在有10块糖,两人轮流拿,每人只能拿1到2块糖,谁拿到了最后的糖块,谁胜出。请设计一个程序进行人机游戏,保证机器每次都赢。

第二步:继续完善上面的案例,要求1) 可以通过屏幕输入设置糖块的个数;2) 对人为输入的糖块进行合理性判断,如果不是1块或者2块,要求重新输入。根据输入糖块的总数判断机器先拿还是人先拿,总之最终保证经过多轮游戏之后,机器胜出。

思路历程: 程序最终运行结果:保证机器每次都赢 分析程序结束条件:

        当机器人拿到最后一份糖块(1块或2块),即当机器人拿完糖块之后,剩余糖块为0,则机器人获胜

程序模拟:

        

首先以10个糖为模板进行推导:

当机器进行拿糖前,如果剩余糖为1或2,则机器必然会赢得比赛

往前回溯

人拿到1或2个糖之后,剩余1或2个糖,即人拿糖之前,剩余3个糖

继续往前回溯

机器拿到1或2个糖后给人剩余3个糖,那么机器拿糖之前,有5个糖或4个糖

有5个糖时,机器拿走2个,有4个糖时,机器拿走1个,则人必然会输掉比赛

再往前回溯

当机器拿糖前有7个糖,或者8个糖,7个时,机器拿走1个,人拿走1个或两个,则给机器剩余4个或5个糖,机器必然会赢得比赛

8个时,机器拿走两个,人拿走一个或两个,则给机器剩余4个或5个糖,机器必然赢得比赛

综上,出现表格:

机器拿糖前剩余糖数机器拿糖数
41
52
71
82

那么思考是否会出现

机器拿糖前剩余糖数机器拿糖数
101
112
131
142

经简单验证,证得无误,经观察可得出,机器拿糖之前的数目与机器拿糖数有如下关系

机器那糖前剩余糖数机器拿糖数
4+3*n1
4+3*n+12

接下来进行实现(这里因为思路全部导通,就不再进行赘述,直接放代码了 ^_^)

import random
def judge_int():#限定输入int类型的糖块,并且需要限制糖块数量大于2
    while True:
        try:    
            n = eval(input("请输入糖块个数:"))
            if type(n) == int:
                if n <= 0:
                    print("输入糖块个数不是正整数!")
                elif n <= 2:
                    print("这样太欺负人了!换个数字吧*-*")
                else:
                    return n
            else :
                print("输入不是整数!")
        except :
            print("输入不是整数!")
            
def judge_clint():#限定客户输入为1或2
    while True:
        try:
            n = eval(input("请输入你要拿的糖块数:"))
            if n > 2:
                print("你拿的太多啦!")
                pass
            elif n < 1:
                print("你拿糖块了吗??咱这么热情,你不给面子?")
                pass
            elif type(n) == int:
                return n
            else:
                print("我可没办法给你切{:}块糖".format(n))
        except:
            print("请不要胡乱输入!")
            
def judge_rbt(a):#判断机器人应该拿糖的数量
    if a == 1 or a == 2:
        return a
    elif (a-4)%3 == 0:
        return 1
    elif (a-5)%3 == 0:
        return 2
    else:return random.randint(1,2)

def major_process(op):
    global a
    while True:
        if op == 1:
            c = judge_rbt(a)#这里判断出机器人应该拿的数量
            print("机器人拿走了{}块糖 *>-<*".format(c))
            a-=c
            print("现在一共有{}块糖".format(a))
            if a <= 0 :
                print("机器人赢啦!n------------------------------------------")
                break
            b = judge_clint()
            a-=b
            print("现在一共有{}块糖".format(a))
        else:
            b = judge_clint()
            a-=b
            print("现在一共有{}块糖".format(a))
            c = judge_rbt(a)#这里判断出机器人应该拿的数量
            print("机器人拿走了{}块糖 *>-<*".format(c))
            a-=c
            print("现在一共有{}块糖".format(a))
            if a <= 0 :
                print("机器人赢啦!n------------------------------------------")
                break

while True:
    a = judge_int()
    print("现在一共有{}块糖".format(a))
    print("1.让机器人先拿n2.我先来n0.退出游戏")
    try:
        op = eval(input("请输入你的选择:"))
        if type(op) == int:
            if op == 1 or op == 2:
                major_process(op)#这里进入主程序
                pass
            elif op == 0:
                break
            else:
                print("请输入正确的选项!")
        else:
            print("请输入正确选项!")
    except:
        print("请输入正确选项!")
    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/773002.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号