初学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.游戏代码: 输入数字,来猜测原作者心中所想的数字,猜中夸你,猜不中不夸你, ...
随机推荐
- kubernetes部署一个应用程序
文章原文 部署 nginx Deployment 如果你已经完成了Kubernetes的搭建,那我跟我一块来部署第一个应用程序吧.没有完成 Kubernetes 集群搭建的,请参考文档 使用 kube ...
- rsync 服务搭建
rsync 服务搭建 服务端部署操作内容: 创建rsync用户和用户组 eg: useradd -s /sbin/nologin -M rsync 创建需要备份的指定目录,并修改权限 eg: mkdi ...
- jvm学习笔记:类加载过程
类加载器子系统 类加载器的作用是加载class文件到内存 加载阶段->链接阶段->初始化阶段 ClassLoader只负责class文件的加载,至于是否能够运行由执行引擎判断 加载的类信息 ...
- 为何GRE可以封装组播报文而IPSEC却不行?
Author : Email : vip_13031075266@163.com Date : 2021.01.24 Copyright : 未经同意不得 ...
- 掌握基于AOP事务管理
一.手动管理和半自动工厂模式 二.AOP事务管理 1.表达式中,第一个※是返回值所有类型,service包下一个点意思是service包下的类,两个点意思是service包下的类和其子包下的类也包含, ...
- Linux学习笔记--快捷键
桌面 ALT+空格 打开窗口菜单 ALT+F1 聚焦到桌面左侧任务导航栏,可按上下键导航 ALT+F2 运行命令 ALT+F4 关闭窗口 ALT+TAB 切换程序窗口 PRINT 桌面截图 S ...
- IO流实现GBK写入文件然后转换UTF-8
public static void main(String[] args) throws IOException { File file = new File("olol\\a.txt&q ...
- GMAP.NET系列学习文档
http://www.cnblogs.com/enjoyeclipse/archive/2013/01/13/2858392.html http://www.cnblogs.com/luxiaoxun ...
- apache php RabbitMQ配置方式
确定自己的php版本号和位数,去pecl.php.net下载版本相应的rabbitmq扩展包, 以php5版本为例,在http://pecl.php.net/package/amqp里面选择php5对 ...
- html阴影 box-shadow
右下阴影 div { box-shadow: 10px 10px 5px #888888; }四周阴影 div { box-shadow: 0 0 5px #888888; } div {box-sh ...