文档介绍

利用python写"猜数字”,"猜词语”,"谁是卧底”这三个游戏,从而快速掌握python编程的入门知识,包括python语法/列表/元组/字典/流程控制/库函数等等。

环境参数

linux平台,python3.4。需要在linux中把python3.4编译一下,这样编写python程序时保存为.py格式的文件并添加执行权限再终端运行即可(原理跟shell脚本相同),非常方便。

ps:贴出来的python程序代码在windows中也兼容,只不过运行方式不是命令行,而是要通过python软件。python软件可以上官网下载安装点击打开链接,在学习的时候,可以直接在python软件上面输入python语句即可打印结果,也就是说python无需编译即可运行,很多人也称之为"脚本”语言。

设计实现

猜数字

很多人在聚餐时都玩过猜数字游戏,由某人随机出一个指定范围内的数,然后其他人一个一个猜,猜的过程中区间不断缩小,直到猜中为止。

这里的猜数字游戏就是用程序来代替那个出数字的人,程序算法设计为:

1.输入数字区间--->2.系统产生区间内的随机数--->3.玩家输入自己猜的数字--->4.比较玩家猜的与答案的高低并提示--->5.未猜中则回到3,猜中则提示猜次数

代码很少,如下所示:

#!/usr/local/bin/python3

import random

bot=int(input('Set range bottom '))

top=int(input('Set range top '))

rand=random.randint(bot,top)

print ('Random number in ['+str(bot)+','+str(top)+'] generated!')

num=int(input('###Guess the number### '))

cnt=1

while (num!=rand):

if (num

print('*_* Lower than the answer')

else:

print('T_T Higher than the answer')

num=int(input('###Guess the number### '))

cnt=cnt+1

print('^_^ You get the answer with [%d] times'%cnt)

第一行是要让linux系统知道这是python3程序,random是产生随机数的库函数,要注意的是python对格式要求很严格,因为它不用通过{}而是通过缩进量判断流程。

通过这个可以掌握基本的语法和编写规则了,下面再试试有点难度的,用到词组和循环控制等知识。

猜词语

电视节目中的”你来比划我来猜"大家应该都看过,而且很多人也玩过,规则就是一个人看词语比划相应动作和说一些提示,另一个人看不到词语要通过比划的动作猜出来,猜的过程中主持人判断是否符合规则。

某一组玩家猜词语的算法设计为:

1.开始计时--->2.猜词语--->3.答对则正确数加1并回到2,要跳过或犯规了则直接回到2,超时了直接跳到3--->3.循环10次后或时间结束后统计答对的题数

有num组玩家就进行以上流程的num次循环,当然也要准备x组词语,因为每组玩家猜的词语是不同的。

代码量不大,如下所示:

#!/usr/local/bin/python3

import time

num = int(input('有多少组玩家 '))

guessWord = []

correct = []

#定义列表,num+10是不想让guessWord下标不合法

for i in range(0,num+10):

guessWord.append(0)

correct.append(0)

wordNum=10

guessWord[0] = ['打情骂俏','海绵宝宝','娇媚','金鸡独立','狼吞虎咽','睡眼朦胧','鹤立鸡群','手舞足蹈','卓别林','穿越火线']

guessWord[1] = ['眉飞色舞','英雄联盟','扭秧歌','偷看美女','大摇大摆','回眸一笑','市场营销','大眼瞪小眼','自恋','处女座']

guessWord[2] = ['狗急跳墙','捧腹大笑','目不转睛','愁眉苦脸','左顾右盼','宫保鸡丁','升国旗','暗恋','臭袜子','趁火打劫']

flag='n'

for i in range(0,num):

start = time.time()

for k in range(0,wordNum):

#显示词语

print (('%d.%s')%(k+1,guessWord[i][k]))

flag = input('请答题,答对请输入y,跳过请输入任意键')

end = time.time()

sec = end-start

#统计用时

if (110<=sec<=120):

print ('还有10秒钟')

if (sec>=120):

print ('时间到!游戏结束')

break

if (flag=='y'):

correct[i]=correct[i]+1

continue

else:

continue

str_temp=('第%d组答对数目:%d') % (i+1,correct[i])

print (str_temp)

其实词语可以做成从独立的文件中读入的方式,这样方便更新和管理,下面就介绍一种用"字典”的方式来获得"谁是卧底”的卧底词。

谁是卧底

谁是卧底也是深受很多人喜欢的游戏,起码要三人以上才能玩,大致分为几个阶段:1.分配平民词语和卧底词语--->2.玩家依次发言--->3.根据发言投票认为谁是卧底--->4.得到票数最多的玩家出局--->5.出局玩家刚好是卧底则平民胜利,如果出局玩家是平民则被冤死并继续第2步,当剩下的平民只有1个时卧底胜利。

特殊情况是,出现两名或以上的玩家票数相同,则相同票数的玩家重新发言,然后全体针对这几个玩家投票。

程序设计思想:输入玩家数num,玩家编号为0~num-1,然后定义三个含有num个元素的列表:词语列表,计算玩家票数的列表,死亡玩家的列表。列表下标从0~num-1,随机产生该区间的数x,代表x号玩家是卧底,然后分配卧底词和平民词。注意,提示几号玩家是卧底或冤死的时候,要将打印信息时候的下标加1,比如下标数0代表的其实是1号玩家。在生活中,没多少人会习惯说自己是"第0个人”这种说法吧,除了程序员--;

在每轮游戏中,依次进行发言,投票,票数最多的玩家出局(出现相同票数则重新发言),出局玩家归入死亡玩家列表。然后开始下一轮。

那么,如果有num位玩家,则最多有多少轮游戏结束?因为进行到只有2位玩家游戏就结束了,所以答案是num-2轮!也就是说上述流程要循环num-2次。

编程思想定了就可以敲代码了,程序代码如下:

#!/usr/local/bin/python3

import random

from spyword import spyword

num=int(input('请输入玩家数(至少为3) '))

#卧底玩家

spy=random.randint(0,num-1)

#随机产生词语 定义词语列表 计算玩家票数的列表 统计死亡玩家的列表

list_rand=spyword.popitem()

word=[]

cnt=[]

dead=[]

#给三个列表赋值

for i in range(0,num):

word.append('a')

cnt.append(0)

dead.append(num+2)

#给玩家词语 其中print是调试用的,sanmeVote是出现相同票数的标志,spyWin是卧底胜利的判决条件

for i in range(0,num):

if (i==spy):

word[i]=str(list_rand[1])

else:

word[i]=str(list_rand[0])

print (word[i])

sameVote=0

spyWin=0

#游戏开始

for x in range(0,num-1):

for k in range(0,num):

if ((k not in dead) & (sameVote==0)):

print ('%d号玩家发言时间'%(k+1))

print ('发言环节结束')

#将各位玩家的票数置0

for j in range(0,num):

if (j not in dead):

cnt[j]=0

for j in range(0,num):

if (j not in dead):

vote2p=int(input('请%d号玩家投票'%(j+1)))-1

cnt[vote2p]=cnt[vote2p]+1

sameVote=0

for y in range(0,num):

if((cnt[y]==max(cnt)) & (y!=cnt.index(max(cnt)))):

print ('不止一位玩家得到最高票数,请这些玩家重新发言')

sameVote=1

if (sameVote==0):

dead[x]=cnt.index(max(cnt))

if (dead[x]==spy):

print ('卧底得到最多票数,游戏结束')

spyWin=1

break

print ('%d号玩家被冤死!'%(dead[x]+1))

#游戏结束

if(spyWin==0):

print ('只剩两名玩家,卧底胜利!')

有一行代码是

from spyword import spyword

这里spyword是我自己定义的卧底词字典,运行时把这个文件放在python的工作目录下,就可以让python程序调用该字典了。要查看python工作目录,你需要运行python后输入

>>>importos

>>>os.getcwd()

当然你也可以更改python工作目录。

python是一门简洁高效,通俗易懂的高阶动态编程语言;很多人也称之为"胶水语言”,在接到大项目时往往用python写好主体框架,然后在一些特定模块再用java/js/C++之类的语言实现特定需求。掌握python并不难,通过这篇博客讲到的三个小游戏,希望您能发现python的乐趣,快速找到python编程的窍门。

总结

以上就是本文关于python基础练习之几个简单的游戏的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Python3中的列表,元组,字典,字符串相关知识小结、Python爬虫实例爬取网站搞笑段子、python实现人脸识别代码等,有什么问题可以随时留言,小编会及时回复大家的。感谢朋友们对本站的支持!

简单的python脚本-python基础练习之几个简单的游戏相关推荐

  1. 【Linux】 Jetbot、Dofbot机器人如何创建、执行python脚本+Linux基础操作

    文章目录 一.Jetbot.dofbot机器人创建执行python脚本方法 1.1 引言 1.2 通过SSH协议传输文件 1.2.1 Mobaxterm的下载安装 1.2.2 Mobaxterm创建s ...

  2. 树莓派能直接运行python程序_在树莓派上运行python脚本 - python

    我正在研究rapiberry pi 3大约3个月,开始使用它时遇到了问题. 我找不到在树莓派打开时在其上运行python脚本的有效,安全的方法(没有监视器,鼠标和键盘).此刻,我在/ etc / pr ...

  3. Python脚本下载TCGA大数据,非常简单,开放源代码

    前言 使用TCGA官方的gdc-client下载工具有时候很慢,经常会挂掉,那干脆自己写一个下载小程序.于是使用TCGA的API写了个下载TCGA数据的脚本,脚本也是需要下载manifest文件的. ...

  4. python脚本编程基础读后感_Python基础教程读后感摘抄

    <Python基础教程>是一本由Magnus Lie Hetland著作,人民邮电出版社出版的平装图书,本书定价:69.00元,页数:471,特精心从网络上整理的一些读者的读后感,希望对大 ...

  5. 100个必会的python脚本-Python 经典算法100及解析(小结)

    1:找出字符串s="aaabbbccceeefff111144444"中,字符出现次数最多的字符 (1)考虑去重,首先将字符串进行过滤去重,这样在根据这些字符进行循环查询时,将会减 ...

  6. Python脚本 Python配合adb命令实现自动发红包

    1.前言 adb是个好东西,可以通过提供的坐标模拟点击手机屏幕的相应位置.像以前很火的"跳一跳"就是通过adb实现自动跳跃.在手机使用按键精灵的脚本其实原理也都大同小异,确定坐标- ...

  7. Python基础入门篇【2】--python脚本结构

    目录 文章目录 python脚本简单介绍 编写一个简单的python脚本 新建一个python脚本 python脚本的结构 python脚本的执行 python脚本的头部注释 什么是头注释? 头注释的 ...

  8. 【奶奶看了都会】教你用Python 脚本薅京东签到羊毛

    又到了周末的时间,每次周末都得整点花里胡哨的东西玩,今天就来说说怎么用Python脚本自动完成京东签到领京豆 京豆在京东上面可以抵扣运费.充话费等等.京豆获取方式有每日签到.做任务 自动签到脚本 这里 ...

  9. python c#_【分享】C# 调用 Python 脚本, 与 Python 调用 C# 类库

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 C# 调用 Python 脚本 操作步骤 1.创建一个控制台程序. O0101_DotNetCallPython. 2.管理 Nuget 程序包,搜索 I ...

最新文章

  1. 双系统安装的流程记录
  2. java开发app教程,进阶加薪全靠它!
  3. Netadvantage锁定grid列和锁定Excel栏位
  4. 礼赞 Wordpress,蝉知可直接使用 Wordpress 模板
  5. Greenplum 数据库架构分析
  6. 优秀的基数统计算法——HyperLogLog
  7. Common Sort - 排序 - Java
  8. vim 设置标签等操作
  9. Makefile.am和makefile.in生成Makefile
  10. cad中简单流程图制作_Excel vba 简单制作流程图方法介绍
  11. 翻牌抽奖 php,PHP+jQuery开发简单的翻牌抽奖实例
  12. mysql 获取下一条记录数,如何在MySQL中查询当前数据上一条和下一条的记录
  13. Android知识点汇总以及常见面试题
  14. TensorFlow(二) 用TensorFlow为线性回归算法实现矩阵分解
  15. 云在服务器上装系统,怎么在云服务器上安装系统
  16. 软件设计开发笔记2:基于QT设计串口调试工具
  17. html+js实现注册页面及信息验证
  18. android studio logcat 字体,android studio - 修改logcat颜色字体
  19. 电商订单系统,你该如何设计
  20. 8-2 sdust-Java-文件读取与统计【人工判编程题】 (30 分)

热门文章

  1. 青云科技以开放姿态打造低代码平台
  2. Xilinx AXI Central Direct Memory Access (CDMA)手册笔记
  3. 【转】dd命令详解及利用dd测试磁盘性能
  4. bigquery数据类型_bigquery解释了查询您的数据
  5. Android基础入门教程——2.5.1 Toast(吐司)的基本使用
  6. 华为魔术2手机拆机图解_Honor Magic2拆解图形教程
  7. 20201215记一次502错误
  8. 微信小程序实现tab选中(特殊圆角)样式
  9. AC695x学习笔记(5):空间问题
  10. 【Redis详细安装教程】