Python实战:90行代码实现猜数字游戏

码头散步
码头散步
发布时间:2026-10-12| 3人浏览过
原创

本文通过90行Python代码演示了一个完整的猜数字游戏开发过程。内容涵盖用户注册、基于年龄的金币分配机制、随机数生成与判断逻辑、以及道具购买模块。文章详细解析了输入验证、异常处理及游戏状态流转,适合Python初学者理解基础语法与逻辑控制结构。

导入必要的库文件。

import random
import time

执行用户注册流程。

利用变量存储与input函数获取用户输入。

name = str(input('请输入用户名:'))
print('欢迎您,'+name)

处理用户注册时的年龄信息。

使用异常处理机制,确保非法文本输入时游戏直接结束。

若输入非法文本,则终止游戏运行。

try:
    age = int(input('请输入年龄:'))
except ValueError:
    print('非法输入')
    age = 30000

将年龄上限设定为30000以兼容极端输入。

根据用户输入的年龄数值,计算并分配初始金币数量。

执行金币分配逻辑。

if age <10:
    gold = 500
    print('您的初始金币为500')
if age <20 and age >10:
    gold = 1000
    print('您的初始金币为1000')
if age >20 and age <30:
    gold = 1500
    print('您的初始金币为1500')
if age >30 and age <1000:
    gold = 200
    print('年龄过大,您的初始金币为200')

通过if语句确保金币数值小于10000;若金币达到10000,则判定游戏结束。

执行第一层if条件判断。

if gold !=10000:
    Game_start = str(input('是否开始游戏?(True或False)'))
    while gold !=10000:

进入游戏核心逻辑部分,需仔细关注实现细节。

利用if语句检查Game_start变量是否为True,并初始化一个随机数列表。

结合if语句与随机数生成逻辑。

if Game_start =='True':
	list_123 = [random.randint(1,6),random.randint(1,6),random.randint(1,6),]
	while list_123 ==10:
		list_123 = [random.randint(1,6),random.randint(1,6),random.randint(1,6),]

定义回答变量,并预设正确答案与错误答案的对应关系。

处理用户回答、正确结果与错误结果的判定。

answer = str(input('请猜数(big或small):'))
if list_123[0] + list_123[1] + list_123[2] >10:
	result = 'big'
	error_result = 'small'
if list_123[0] + list_123[1] + list_123[2] <10:
	result = 'small'
	error_result = 'big'

利用if语句区分用户回答是正确、错误还是非法输入。

执行第二层if条件判断。

if answer ==result:
	print('您赢了!')
	gold = gold + 100
	print('随机数为'+str(list_123))
	print('您现在有'+str(gold)+'金币')
elif answer ==error_result:
	print('您输了...')
	print('随机数为'+str(list_123))
	gold = gold - 100
	print('您现在有'+str(gold)+'金币')
else:
	print('非法输入')
	gold = 10000

构建购买游戏道具的功能模块。

由于代码篇幅较长,此处省略逐行解析。

实现道具购买功能。

if gold ==2000 or gold ==3000 or gold ==4000 or gold ==5000 or gold ==6000 or gold ==7000 or gold ==8000 or gold ==9000:
    answer = str(input('您现在可以购买道具,是否购买?(True或False):'))
    if answer =='True':
        print('请说出要购买der道具')
        print('*'*41)
        print('*金币翻倍器[现有的]   金币翻倍器[得到的]*')
        print('*     2000G                  1500G      *')
        print('*'*41)
        answer = str(input('请说出要购买der道具(金币翻倍器[现有的]说1,金币翻倍器[得到的]说2):'))
        if gold >2000 and answer =='1':
            gold = gold - 2000
            answer = int(input('请说出要翻der倍数:'))
            gold = str(gold * answer)
            print('您现在有'+gold+'金币')
            gold = int(gold)
        elif gold >1500 and answer =='2':
            gold = gold - 1500
            answer = int(input('请说出要翻der倍数:'))
            gold_mang = 100 * answer
            gold = gold + gold_mang
            print('您现在有'+str(gold)+'金币')
            gold = int(gold)
            else:
                print('没有这个道具,游戏结束')
                gold = 10000
            elif answer =='False':
                print('继续游戏')
            else:
                print('非法输入')
                gold = 10000

在编写过程中发现需将前述逻辑进行衔接,现补充相关代码。

完成逻辑衔接部分。

import random
import time
name = str(input('请输入用户名:'))
print('欢迎您,'+name)
try:
    age = int(input('请输入年龄:'))
except ValueError:
    print('非法输入')
    age = 30000
    gold = 10000
if age <10:
    gold = 500
    print('您的初始金币为500')
if age <20 and age >10:
    gold = 1000
    print('您的初始金币为1000')
if age >20 and age <30:
    gold = 1500
    print('您的初始金币为1500')
if age >30 and age <1000:
    gold = 200
    print('年龄过大,您的初始金币为200')
if gold !=10000:
    Game_start = str(input('是否开始游戏?(True或False)'))
    while gold !=10000:
        if Game_start =='True':
            list_123 = [random.randint(1,6),random.randint(1,6),random.randint(1,6),]
            while list_123 ==10:
                list_123 = [random.randint(1,6),random.randint(1,6),random.randint(1,6),]
            answer = str(input('请猜数(big或small):'))
            if list_123[0] + list_123[1] + list_123[2] >10:
                result = 'big'
                error_result = 'small'
            if list_123[0] + list_123[1] + list_123[2] <10:
                result = 'small'
                error_result = 'big'
            if answer ==result:
                print('您赢了!')
                gold = gold + 100
                print('随机数为'+str(list_123))
                print('您现在有'+str(gold)+'金币')
            elif answer ==error_result:
                print('您输了...')
                print('随机数为'+str(list_123))
                gold = gold - 100
                print('您现在有'+str(gold)+'金币')
            else:
                print('非法输入')
                gold = 10000
            if gold ==2000 or gold ==3000 or gold ==4000 or gold ==5000 or gold ==6000 or gold ==7000 or gold ==8000 or gold ==9000:
                answer = str(input('您现在可以购买道具,是否购买?(True或False):'))
                if answer =='True':
                    print('请说出要购买der道具')
                    print('*'*41)
                    print('*金币翻倍器[现有的]   金币翻倍器[得到的]*')
                    print('*     2000G                  1500G      *')
                    print('*'*41)
                    answer = str(input('请说出要购买der道具(金币翻倍器[现有的]说1,金币翻倍器[得到的]说2):'))
                    if gold >2000 and answer =='1':
                        gold = gold - 2000
                        answer = int(input('请说出要翻der倍数:'))
                        gold = str(gold * answer)
                        print('您现在有'+gold+'金币')
                        gold = int(gold)
                    elif gold >1500 and answer =='2':
                        gold = gold - 1500
                        answer = int(input('请说出要翻der倍数:'))
                        gold_mang = 100 * answer
                        gold = gold + gold_mang
                        print('您现在有'+str(gold)+'金币')
                        gold = int(gold)
                    else:
                        print('没有这个道具,游戏结束')
                        gold = 10000
                elif answer =='False':
                    print('继续游戏')
                else:
                    print('非法输入')
                    gold = 10000

至此游戏主体功能已基本完成,若仅关注运行结果可跳过后续细节,但完整代码可能存在部分未处理的边界情况。

剩余代码篇幅较长,此处直接展示完整代码实现。

展示完整的源代码。

import random
import time
name = str(input('请输入用户名:'))
print('欢迎您,'+name)
try:
    age = int(input('请输入年龄:'))
except ValueError:
    print('非法输入')
    age = 30000
    gold = 10000
if age <10:
    gold = 500
    print('您的初始金币为500')
if age <20 and age >10:
    gold = 1000
    print('您的初始金币为1000')
if age >20 and age <30:
    gold = 1500
    print('您的初始金币为1500')
if age >30 and age <1000:
    gold = 200
    print('年龄过大,您的初始金币为200')
if gold !=10000:
    Game_start = str(input('是否开始游戏?(True或False)'))
    while gold !=10000:
        if Game_start =='True':
            list_123 = [random.randint(1,6),random.randint(1,6),random.randint(1,6),]
            while list_123 ==10:
                list_123 = [random.randint(1,6),random.randint(1,6),random.randint(1,6),]
            answer = str(input('请猜数(big或small):'))
            if list_123[0] + list_123[1] + list_123[2] >10:
                result = 'big'
                error_result = 'small'
            if list_123[0] + list_123[1] + list_123[2] <10:
                result = 'small'
                error_result = 'big'
            if answer ==result:
                print('您赢了!')
                gold = gold + 100
                print('随机数为'+str(list_123))
                print('您现在有'+str(gold)+'金币')
            elif answer ==error_result:
                print('您输了...')
                print('随机数为'+str(list_123))
                gold = gold - 100
                print('您现在有'+str(gold)+'金币')
            else:
                print('非法输入')
                gold = 10000
            if gold ==2000 or gold ==3000 or gold ==4000 or gold ==5000 or gold ==6000 or gold ==7000 or gold ==8000 or gold ==9000:
                answer = str(input('您现在可以购买道具,是否购买?(True或False):'))
                if answer =='True':
                    print('请说出要购买der道具')
                    print('*'*41)
                    print('*金币翻倍器[现有的]   金币翻倍器[得到的]*')
                    print('*     2000G                  1500G      *')
                    print('*'*41)
                    answer = str(input('请说出要购买der道具(金币翻倍器[现有的]说1,金币翻倍器[得到的]说2):'))
                    if gold >2000 and answer =='1':
                        gold = gold - 2000
                        answer = int(input('请说出要翻der倍数:'))
                        gold = str(gold * answer)
                        print('您现在有'+gold+'金币')
                        gold = int(gold)
                    elif gold >1500 and answer =='2':
                        gold = gold - 1500
                        answer = int(input('请说出要翻der倍数:'))
                        gold_mang = 100 * answer
                        gold = gold + gold_mang
                        print('您现在有'+str(gold)+'金币')
                        gold = int(gold)
                    else:
                        print('没有这个道具,游戏结束')
                        gold = 10000
                elif answer =='False':
                    print('继续游戏')
                else:
                    print('非法输入')
                    gold = 10000
            if gold ==0:
                print('金币没了,游戏结束')
                gold = 10000
        elif Game_start =='False':
            print('欢迎游玩,下次再见!')
            gold = 10000
        else:
            print('非法输入')
            gold = 10000
print('游戏结束,再见!')
time.sleep(10)

关于Python实战中90行代码实现猜数字游戏的介绍至此结束,更多Python相关内容可搜索本站历史文章或浏览后续教程,感谢支持。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。