初学python写个自娱自乐的小游戏
一、摘要
当编写完后的代码执行第一次后达到了目标的预期效果,内心有些许满足,但是当突发情况产生后,程序便不能正常运行,于是准备从简单的版本开始出发,综合考虑使用者的需求,和使用过程中会遇到的问题,一步一步发现和解决问题,最终编写成目前自己满意的程序,由于目前知识有限,欢迎大家提出宝贵的建议。
二、游戏规则
下面我们通过一个“猜数字”的小游戏来看看如何使用while循环。猜数字游戏的规则是:计算机出一个1到100之间的随机数,玩家输入自己猜的数字,计算机给出对应的提示信息(大一点、小一点或猜对了),如果玩家猜中了数字,计算机提示用户一共猜了多少次,游戏结束,否则游戏继续。
三、简易版程序
1、代码
点击查看代码
#猜数字游戏
import random
Ai = random.randint(1, 100)
co = 0
while True:
co += 1
num = int(input('请输入: '))
if Ai > num:
print('大一点')
elif Ai < num:
print('小一点')
else:
print('恭喜你猜对了!')
break
print(f'你总共猜了{co}次')
if co > 7:
print('你的智商余额明显不足')
2、问题:
用户如果输入非整数,程序将会报错,游戏无法继续
四、改版1
1、解决:
通过if判断和break语句解决用户误输入非整数类型的报错
点击查看代码
import random
Ai = random.randint(1, 100)
co = 0
a = input('接下来我们将开始猜数字游戏,Are you ready! y/n: ')
if a == 'y':
while True:
co += 1
num = int(input('请输入: '))
if Ai > num:
print('大一点')
elif Ai < num:
print('小一点')
else:
print('恭喜你猜对了!')
break
print('你总共猜了{co}次')
if co > 7:
print('你的智商余额明显不足')
elif a == 'n':
print('程序运行结束')
else:
print('输入无效,程序终止')
2、问题:
通过解决了用户误输入报错的问题,程序基本正常运行,也提升了用户和程序的交互性。但是又发现了新的问题,用户交互性不够好,程序只能运行一次就自动结束。
五、改版2
1、解决:
通过嵌套if语句使得while语句内部的程序可以多次运行,为了避免if语句内部用户误输入再次报错,再使用while嵌套一层,然后使用break避免该结束的语句重复运行
点击查看代码
import random
Ai = random.randint(1,100)
a = input('接下来我们将开始猜数字游戏,Are you ready! y/n: ')
while True:
if a == 'y':
co = 0
while True:
num = int(input('请输入一个1-100之间的数字:'))
co +=1
if Ai > num:
print('你输入的数字小了')
elif Ai < num:
print('你输入的数字大了')
elif Ai == num:
if co < 7:
print(f'恭喜你猜对了!你一共用了{co}次,实在优秀')
a = input('请问是否继续游戏y/n: ')
if a == 'n':
break
else:
print(f'恭喜你猜对了!但是你一共用了{co}次,很遗憾的告诉你,你的智商余额明显不足')
a = input('请问是否继续游戏y/n: ')
if a == 'n':
break
else:
print('你输入的是无效的数字,程序自动终止')
break
elif a == 'n':
print('程序运行结束')
break
else:
print('输入无效,程序终止')
break
2、问题:
现在基本解决了用户误输入报错和交互性的问题,可以多次正常运行了,可是运行多次后发现程序提示用户输入次数是开始到程序结束的次数,但是预期希望的是每一次开始都是重新计算次数
六、改版三
1、解决:
通过每次重新开始都给co这个变量赋值为0,这样就解决了程序每次开始不重新计数的问题了
点击查看代码
import random
Ai = random.randint(1,100)
a = input('接下来我们将开始猜数字游戏,Are you ready! y/n: ')
while True:
if a == 'y':
co = 0
while True:
num = int(input('请输入一个1-100之间的数字:'))
co +=1
if Ai > num:
print('你输入的数字小了')
elif Ai < num:
print('你输入的数字大了')
elif Ai == num:
if co < 7:
print(f'恭喜你猜对了!你一共用了{co}次,实在优秀')
a = input('请问是否继续游戏y/n: ')
co = 0
if a == 'n':
break
else:
print(f'恭喜你猜对了!但是你一共用了{co}次,很遗憾的告诉你,你的智商余额明显不足')
a = input('请问是否继续游戏y/n: ')
co = 0
if a == 'n':
break
else:
print('你输入的是无效的数字,程序自动终止')
break
elif a == 'n':
print('程序运行结束')
break
else:
print('输入无效,程序终止')
break
七、总结
以上是目前运行程序发现并解决问题的一些思路,这个程序对高手而言或许不够简洁,但是基于目前知识有限,希望大家能够提出建议,还有运行中要是有发现其他问题欢迎提出,共同进步。最后小秀一把一次就猜对成绩,嘿嘿!

初学python写个自娱自乐的小游戏的更多相关文章
- 用 Python 写个消消乐小游戏
提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受欢迎程度可见一斑,本文我们使用 Python 来做个简单的消消乐小游戏. 很多人学习python,不 ...
- 用python写了一个猜年龄小游戏
写一个猜年龄游戏: 需要实现用户登录的功能 初始用户登录信息为 {'hades': '13579','nick': '123','ruixing': 'a1','fanping': 'b2'} 登录时 ...
- python写的第一个简单小游戏-猜数字
#Filename:game1.py guess=10 running=True while running: try: answer=int(raw_input('Guess what i thin ...
- 初学Python写二进制文件
初学Python写二进制文件 把一个图片的16进制数据保存到一个txt文本,从这个txt文本读出并保存为二进制文件jpg图片文件.说明:图片读出的0xff粘贴ff到文本中,读出时是字符串的”ff”. ...
- Python基础入门-实现猜数字小游戏
今天呢,我们来通过前面学过的一些知识点来完成一个猜数字大小的游戏程序设计.那么呢,一般人写代码直接上来就干,没有分析,这样的做法是没有产出的,除非你是大牛,今天呢,我会把我学习编程的思路分享给大家,我 ...
- 一听就懂:用Python做一个超简单的小游戏
写它会用到 while 循环random 模块if 语句输入输出函数
- 用python实现自动玩21点小游戏
1. 背景 前段时间发现一个论坛上(https://npupt.com/blackjack.php)有21点小游戏. 这个21点小游戏的规则是每个人开局都会获得随机点数,如果觉得点数小,可以继续摸牌. ...
- python 基础(实例1——登陆小游戏)
一个简单的登陆小游戏,输入用户名和密码,如果和user_passwd.txt中内容匹配,则打印“welcome to login...”,如果三次输入错误则将该用户列入黑名单,无法再用该用户名登陆. ...
- 零基础python教程-用Python设计你的第一个小游戏
学以致用,既然学习了python就要让它来实现我们想做的东西,这次咱就用python来做个简单小游戏,在实践中不断成长. 1.游戏代码: 输入数字,来猜测原作者心中所想的数字,猜中夸你,猜不中不夸你, ...
随机推荐
- 源码编译安装nginx及设置开机启动项
1.上传nginx文档:解压到/data目录下,并安装依赖包tar xf nginx-1.20.1.tar.gz -C /data/cd /data/nginx-1.20.1/ && ...
- 菜鸟入门Linux之路(方法论浅谈)
Linux是为人熟知的OS之王,已"统治"世界.要想学好绝非易事. 作为菜鸟,可以与Linux亲密接触的方法很多,如视频.书籍.各种企培资料等等,如今的在线教育也如火如荼. 总结说 ...
- 运输层协议:TCP和UDP
运输层简介 运输层的通信实体不再是主机,而是主机中的进程.运输层的通信是一台主机的进程和另一台主机的进程进行数据交换. 运输层作用 运输层向上层的应用层提供通信服务 运输层为进程提供端到端的通信 运输 ...
- Windows安装Docker & Docker-Compose & 配置docker私有仓库
一定要给windows先创建软连接,不然系统盘会爆表的: mklink /j .docker D:\Administrator\.docker Win7安装Docker Dockerfile # FR ...
- 剑指 Offer 60. n个骰子的点数
剑指 Offer 60. n个骰子的点数 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s.输入n,打印出s的所有可能的值出现的概率. 你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n ...
- 学习PHP中的高精度计时器HRTime扩展
不知道大家还记得在学校的时候体育测试时老师带的秒表吗?当枪声想起时,我们开始跑步,这时秒表启动,当我们跑过终点后,老师会按下按扭记录我们的成绩,这就是一个典型的定时器的应用.今天我们要学习的内容其实就 ...
- PHP中环境变量的操作
在 PHP 中,我们可以通过 phpinfo() 查看到当前系统中的环境变量信息(Environment).在代码中,我们也可以通过两个函数,查看和修改相应的环境变量信息. getenv() 获取环境 ...
- 一起搞懂PHP的错误和异常(三)
关于错误与异常的最后一篇文章,我们来进行一些总结. PHP中错误和异常的区别 通过前面两篇文章的学习,我们来直接将错误和异常摆上来进行对比,看看他们的区别与联系: 错误的出现通常是语法或编译运行时错误 ...
- 探究java的intern方法
本文主要解释java的intern方法的作用和原理,同时会解释一下经常问的String面试题. 首先先说一下结论,后面会实际操作,验证一下结论.intern方法在不同的Java版本中的实现是不一样的. ...
- webrtc源码阅读理解一
webrtc是一个比较成熟的实时音视频处理开源项目,一上来老大就扔给我一本webrtc native实践,虽然狠下心"翻"完了一遍,但是还是云里雾里的,在经过几个月的摸索之后,我大 ...