python-从聚会游戏引发的猜数字小游戏案例

python-从聚会游戏引发的猜数字小游戏案例

目录

python-从聚会游戏引发的猜数字小游戏案例

一、文章主题

二、聚会暖场游戏:数字炸弹

三、思考

四、文章总结


一、文章主题

对于上期提到有关抽奖的案例,他的不确定性是我们无法避免的,是不是有一种比较确定的东西来帮助我们进行娱乐呢?答案是有的。接下来我们来说一说这个简单的聚会游戏。

Python关于抽奖的思考——不当非酋

二、聚会暖场游戏:数字炸弹

我们来说一下这个游戏的游戏规则:

  1. 首先,我们确定一个人做为主持人,他不参与本轮的游戏。
  2. 然后由主持人确定一个范围1-100,并写下范围内的一个数字51,准备好之后,便开始
  3. 之后按照顺时针或者逆时针的方向,由参与人依次报出范围内的数字。
  4. 主持人根据报出数字与手中的数字进行比较,并提示,大了,或者小了,答对了。
  5. 参与者报70,听到主持人说大了,然后到下一个人,则之后的人只能,0-70选择数字。
  6. 参与者报20,听到主持人说小了,然后到下一个人,则之后的人只能从20-70选择数字。、
  7. 参与者报51,听到主持人说答对了,恭喜你,你输了,罚酒一杯。
  8. 惩罚之后,“中奖者”就会作为本轮的主持人,继续游戏。防止连续“中奖”

毕竟娱乐,大家都是点到为止,也不强制,也是活跃气氛。(莫要贪杯)

三、思考

游戏结束了,思考,那我们是否能通过程序来实现这个猜数字的过程。

我们进行一下简化:

  1. 根据最大值,最小值确定范围。
  2. 如果大了或者小了,给他提示。
  3. 如果答对了,回答答对了,结束

第一种:机器猜

我们来实现一下,机器猜我们定的数字,如果猜错了,我们需要取出区间内的中间值,再去判断。

代码如下:

def guess_my_number():
    print("请在心中想一个1~100之间的数字,我会尽力猜出来。")
    low = 1
    high = 100
    while True:
        guess = (low + high) // 2
        result = input("我猜这个数字是{},是大了(输入L),小了(输入S),猜对了(输入D):".format(guess))
        if result == "D":
            print("我猜对了!")
            break
        elif result == "L":
            high = guess - 1
        elif result == "S":
            low = guess + 1
# 调用函数
guess_my_number()

这样的话,就实现了,机器猜我们的数字的目的。运行结果如下,我的数字是61.

第二种:我来猜

我们需要来猜测机器随机生成的是哪个数字,相同的原理,我们猜错了,他需要回答我们大了还是小了。

这里我们来做一个界面,操作更加方便。

代码如下:

import tkinter as tk
import random
class GuessNumberGame(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.master.title("猜数字游戏")
        self.pack()
        self.create_widgets()
    def create_widgets(self):
        # 显示题目
        self.question_label = tk.Label(self, text="请在心中想一个1~100之间的数字,我会尽力猜出来。")
        self.question_label.pack()
        # 显示猜测结果
        self.guess_label = tk.Label(self, text="")
        self.guess_label.pack()
        # 显示输入框和按钮
        self.input_frame = tk.Frame(self)
        self.input_frame.pack(side="bottom")
        self.input_entry = tk.Entry(self.input_frame, width=10)
        self.input_entry.pack(side="left")
        self.submit_button = tk.Button(self.input_frame, text="猜测", command=self.guess)
        self.submit_button.pack(side="left")
        # 初始化游戏
        self.low = 1
        self.high = 100
        self.guess_number = self.generate_guess_number()
    def generate_guess_number(self):
        return random.randint(self.low, self.high)
    def guess(self):
        try:
            guess = int(self.input_entry.get())
            if guess < self.guess_number:
                self.guess_label.configure(text="您猜的数字太小了!")
                self.low = guess + 1
            elif guess > self.guess_number:
                self.guess_label.configure(text="您猜的数字太大了!")
                self.high = guess - 1
            else:
                self.guess_label.configure(text="恭喜您,猜对了!")
                self.submit_button.configure(state="disabled")
        except ValueError:
            self.guess_label.configure(text="请输入一个数字!")
        self.input_entry.delete(0, tk.END)
root = tk.Tk()
game = GuessNumberGame(master=root)
game.mainloop()

这样我们就实现我们猜机器的数字了。

 

四、文章总结

文章主要使用到的模块,随机数模块random,tkinter模块(制作桌面应用)运用简单的标签,按钮组件。

学习运用到基础知识无限循环,和if判断。

Python关于抽奖的思考——不当非酋https://blog.csdn.net/qq_39046854/article/details/129658889?spm=1001.2014.3001.5501

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大家一起学编程(python)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值