Python入门到脱坑经典案例—猜数字游戏

liftword1周前 (06-21)技术文章3

猜数字游戏是一个经典的Python入门案例,可以帮助初学者理解随机数生成、循环、条件判断和用户输入处理等基础概念。下面我将介绍几种不同版本的猜数字游戏实现。

基础版猜数字游戏

import random

def guess_number():
    """基础版猜数字游戏"""
    number = random.randint(1, 100)  # 生成1-100的随机数
    attempts = 0
    
    print("欢迎来到猜数字游戏!")
    print("我已经想了一个1到100之间的数字,你猜是多少?")
    
    while True:
        try:
            guess = int(input("请输入你的猜测: "))
            attempts += 1
            
            if guess < number:
                print("太小了,再大一点!")
            elif guess > number:
                print("太大了,再小一点!")
            else:
                print(f"恭喜你!你用了{attempts}次猜对了数字{number}!")
                break
                
        except ValueError:
            print("请输入一个有效的数字!")

guess_number()

增强版:限制猜测次数

def guess_number_with_limits():
    """限制猜测次数的猜数字游戏"""
    number = random.randint(1, 100)
    max_attempts = 10
    attempts = 0
    
    print(f"你有{max_attempts}次机会猜1-100之间的数字")
    
    while attempts < max_attempts:
        try:
            guess = int(input(f"第{attempts+1}次猜测: "))
            attempts += 1
            
            if guess < number:
                print("太小了!")
            elif guess > number:
                print("太大了!")
            else:
                print(f"太棒了!你在第{attempts}次猜中了数字{number}!")
                return
                
            remaining = max_attempts - attempts
            if remaining > 0:
                print(f"你还有{remaining}次机会")
                
        except ValueError:
            print("请输入一个有效的数字!")
    
    print(f"游戏结束!正确答案是{number}")

guess_number_with_limits()

进阶版:自定义难度级别

def guess_number_with_difficulty():
    """带难度选择的猜数字游戏"""
    print("选择难度级别:")
    print("1. 简单 (1-50, 10次机会)")
    print("2. 中等 (1-100, 7次机会)")
    print("3. 困难 (1-200, 5次机会)")
    
    while True:
        try:
            level = int(input("请输入难度级别(1-3): "))
            if level in (1, 2, 3):
                break
            print("请输入1-3之间的数字!")
        except ValueError:
            print("请输入有效的数字!")
    
    if level == 1:
        range_max, attempts = 50, 10
    elif level == 2:
        range_max, attempts = 100, 7
    else:
        range_max, attempts = 200, 5
    
    number = random.randint(1, range_max)
    print(f"我已经想了一个1到{range_max}之间的数字,你有{attempts}次猜测机会")
    
    for attempt in range(1, attempts + 1):
        try:
            guess = int(input(f"第{attempt}次猜测: "))
            
            if guess < number:
                print("太小了!")
            elif guess > number:
                print("太大了!")
            else:
                print(f"恭喜!你在第{attempt}次猜中了数字{number}!")
                return
                
        except ValueError:
            print("请输入一个有效的数字!")
            attempt -= 1  # 不计算无效尝试
    
    print(f"游戏结束!正确答案是{number}")

guess_number_with_difficulty()

图形界面版(使用Tkinter)

import tkinter as tk
from tkinter import messagebox
import random

class GuessNumberGame:
    def __init__(self, master):
        self.master = master
        master.title("猜数字游戏")
        
        self.number = random.randint(1, 100)
        self.attempts = 0
        
        # 创建界面元素
        self.label = tk.Label(master, text="猜一个1到100之间的数字:")
        self.label.pack()
        
        self.entry = tk.Entry(master)
        self.entry.pack()
        
        self.guess_button = tk.Button(master, text="猜", command=self.check_guess)
        self.guess_button.pack()
        
        self.hint_label = tk.Label(master, text="")
        self.hint_label.pack()
        
        self.attempts_label = tk.Label(master, text="尝试次数: 0")
        self.attempts_label.pack()
    
    def check_guess(self):
        try:
            guess = int(self.entry.get())
            self.attempts += 1
            self.attempts_label.config(text=f"尝试次数: {self.attempts}")
            
            if guess < self.number:
                self.hint_label.config(text="太小了!")
            elif guess > self.number:
                self.hint_label.config(text="太大了!")
            else:
                messagebox.showinfo("恭喜", f"你用了{self.attempts}次猜对了数字{self.number}!")
                self.master.destroy()
                return
                
            self.entry.delete(0, tk.END)
            
        except ValueError:
            messagebox.showerror("错误", "请输入一个有效的数字!")

# 启动游戏
root = tk.Tk()
game = GuessNumberGame(root)
root.mainloop()

多人对战版

def multiplayer_guess_game():
    """多人对战猜数字游戏"""
    import getpass
    
    print("多人对战猜数字游戏")
    player1 = input("玩家1名称: ")
    player2 = input("玩家2名称: ")
    
    # 玩家1设置数字
    print(f"\n{player1},请设置一个1-100的数字")
    while True:
        try:
            number = int(getpass.getpass("请输入数字(对另一位玩家不可见): "))
            if 1 <= number <= 100:
                break
            print("请输入1-100之间的数字!")
        except ValueError:
            print("请输入有效的数字!")
    
    # 玩家2猜数字
    print(f"\n{player2},现在开始猜{player1}设置的数字")
    attempts = 0
    
    while True:
        try:
            guess = int(input("你的猜测: "))
            attempts += 1
            
            if guess < number:
                print("太小了!")
            elif guess > number:
                print("太大了!")
            else:
                print(f"恭喜{player2}!你用了{attempts}次猜对了数字!")
                print(f"{player1}设置的数字是{number}")
                break
                
        except ValueError:
            print("请输入一个有效的数字!")

multiplayer_guess_game()

总结

通过这个猜数字游戏案例,我们学习了:

  1. 使用random模块生成随机数
  2. 处理用户输入和验证
  3. 使用循环和条件判断控制游戏流程
  4. 创建不同难度级别
  5. 使用Tkinter构建图形界面
  6. 实现简单的多人游戏逻辑

这个案例很好地展示了Python的基础语法和逻辑控制,是初学者练习编程思维的绝佳材料。你可以继续扩展这个游戏,比如添加高分记录、更多游戏模式等功能。

相关文章

从python入门开始,玩这个炸弹超人小游戏,打通关就可以掌握编程

还记得那个街机游戏炸弹超人吗?#python#现在用python可以直接开发出一个这样的炸弹超人小游戏,并且非常简单,跟着详细教程学,再加上所有的源码,你就不仅能开发出一个这样的python小游戏,还...

Python入门塔防小游戏,开发步骤和源码,带你轻松学python

在上一篇文章中,我介绍了有关python入门塔防小游戏的一些功能,下面我继续讲解有关这个小游戏的大致开发步骤。开发工具还是:Python版本:3.6.4相关的模块有:pygame模块,以及一些pyth...

原来通过玩游戏也可以学会编程,这里有六款编程游戏让你尝试

前言除了想成为一名程序员并拥有一份高薪工作之外,还有很多理由让你去学习编程。即使是那些认为自己在其他行业工作的人也可以学习编程,因为它在很多领域都有作用。如果您知道如何编写代码,那么您也知道如何将问题...

Python程序开发之简单小程序实例(11)小游戏-跳动的小球

Python程序开发之简单小程序实例(11)小游戏-跳动的小球一、项目功能用户控制挡板来阻挡跳动的小球。二、项目分析根据项目功能自定义两个类,一个用于控制小球在窗体中的运动,一个用于接收用户按下左右键...

用python迭代器开发可以通关的小游戏

python的迭代器有两个重要的函数,一个是iter()用于创建迭代器,一个是next()用于获取迭代器中的元素。同样是遍历数据序列,迭代器与for循环比起来,各有各的优势,比如下面这个用迭代器开发的...

分享编程之美:Python弹球小游戏

Python是一种流行的编程语言,也是许多游戏开发者所使用的工具。我们可以使用Python来创建各种有趣的小游戏,比如弹球小游戏。首先,我们需要安装一个名为“pygame”的Python库。这个库包含...