文档介绍

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

环境参数

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

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

设计实现

猜数字

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

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

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

代码很少,如下所示:

#!/usr/local/bin/python3import randombot=int(input('Set range bottom\n'))
top=int(input('Set range top\n'))
rand=random.randint(bot,top)
print ('Random number in ['+str(bot)+','+str(top)+'] generated!')
num=int(input('###Guess the number###\n'))
cnt=1
while (num!=rand):if (num<rand):print('*_* Lower than the answer')else:print('T_T Higher than the answer')num=int(input('###Guess the number###\n'))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/python3import time
num = int(input('有多少组玩家\n'))
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 ('时间到!游戏结束')breakif (flag=='y'):correct[i]=correct[i]+1continueelse:continuestr_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/python3import random
from spyword import spywordnum=int(input('请输入玩家数(至少为3)\n'))
#卧底玩家
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 ('发言环节结束')#将各位玩家的票数置0for j in range(0,num):if (j not in dead):cnt[j]=0for j in range(0,num):if (j not in dead):vote2p=int(input('请%d号玩家投票'%(j+1)))-1cnt[vote2p]=cnt[vote2p]+1sameVote=0for y in range(0,num):if((cnt[y]==max(cnt)) & (y!=cnt.index(max(cnt)))):print ('不止一位玩家得到最高票数,请这些玩家重新发言')sameVote=1if (sameVote==0):dead[x]=cnt.index(max(cnt))if (dead[x]==spy):print ('卧底得到最多票数,游戏结束')spyWin=1breakprint ('%d号玩家被冤死!'%(dead[x]+1))#游戏结束
if(spyWin==0):print ('只剩两名玩家,卧底胜利!')

有一行代码是

from spyword import spyword

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

>>> import os
>>> os.getcwd()

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

总结

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

python趣味入门——写几个常玩的游戏相关推荐

  1. python编程小游戏-python趣味入门——写几个常玩的游戏

    文档介绍 利用python写"猜数字","猜词语","谁是卧底"这三个游戏,从而快速掌握python编程的入门知识,包括python语法/列 ...

  2. python趣味编程-python趣味入门——写几个常玩的游戏

    文档介绍 利用python写"猜数字","猜词语","谁是卧底"这三个游戏,从而快速掌握python编程的入门知识,包括python语法/列 ...

  3. 用python简单入门写糖葫芦!

    import turtle t t.goto(-70,-90)@TOC 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Markd ...

  4. python从入门到精通编程汪老师_游戏AI开发从入门到精通:最全游戏AI编程书单...

    闲来无事,把至今出版过的比较知名的游戏 AI 编程书籍整理了一遍,分了包括游戏AI.游AI戏建模.AI设计策划.自然语言编程.人工智能学术类书籍等八个大类,约45本.附上亚马逊的购买连接(国内介绍太少 ...

  5. Python编程入门系列课程

    原文:https://mc.dfrobot.com.cn/thread-309195-1-1.html Python编程入门系列课程--教程目录: Python编程入门系列课程--01 智能绘星 Py ...

  6. python纯函数_理想国真恵玩Python从入门到精通第006天_纯函数写游戏管理系统

    原标题:理想国真恵玩Python从入门到精通第006天_纯函数写游戏管理系统 前面已经带大家学习了函数,高级数据类型,比如说字典,今天带大家用函数加字典做一个游戏管理系统,希望大家喜欢.废话不多说,直 ...

  7. 【python教程入门学习】Python实现自动玩贪吃蛇程序

    这篇文章主要介绍了通过Python实现的简易的自动玩贪吃蛇游戏的小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学一学 实现效果 先看看效果 这比我手动的快多了,而且是单机的,自动玩没惹 ...

  8. python恶搞小程序-知道了这个,你也能写出 Python 趣味小程序

    原标题:知道了这个,你也能写出 Python 趣味小程序 前两天在 51CTO 看见某篇推荐博文,大概是一个 豆子比较感兴趣,在知乎和 github 上搜索了相关的源代码,发现原来实现起来非常的简单, ...

  9. python教程是用什么博客写的-用Python和Pygame写游戏-从入门到精通(目录)

    目光博客一开始,就有一个将pygame好好介绍一遍的宏伟计划,历时四个月,在各位朋友的关怀鞭策下,如今(2011/8/26)理论学习的部分似乎已经都完成了,在次列一个目录,方便查询.介绍还不是很全,下 ...

最新文章

  1. python二分法查找
  2. 学习 ---AJAX如何用于Web部件
  3. Re题目------Enm.exe
  4. 「Python-Pycharm」zipimport.ZipImportError: can‘t decompress data; zlib not available
  5. 2013年东北赛B题(数位DP)
  6. 表单组件中state依赖props
  7. android对应版本号
  8. 多源最短路径---Floyd-Warshall算法
  9. 5 kvm虚拟磁盘扩容
  10. C++模板函数/类示例
  11. 2021下半年ICPC各类赛事时间日程
  12. SQL Server 高可用性(六)日志传送
  13. 中美深度对比,资产管理行业的核心是什么?
  14. 使用 Unbound 创建DNS服务器
  15. Java程序的开发步骤
  16. 企业内网DNS搭建,SmartDNS,网站访问加速,解决dns污染等问题
  17. [zz]明月虽好by 王大根 from 豆瓣
  18. 中年转行,拥抱互联网(上)
  19. 万字报告做空特斯拉:马斯克在操盘一场“庞氏骗局”|硅谷封面
  20. iphone图片编辑画笔_iPhone手机最好的图片编辑软件有哪些?

热门文章

  1. Hungry Rabbit
  2. 【C语言】猜随机数小游戏(知识点:如何产生一个随机值)
  3. vue---uedito---135
  4. VIVADO 4.CDMA的使用
  5. RMSD与PMSF 解释与区别
  6. Thumbnail 图片压缩
  7. 【腾讯开放平台】Android、IOS实现指定QQ临时会话功能
  8. 艾美捷内皮细胞生长添加剂参数说明和相关研究
  9. Git忽略文件及文件夹
  10. python画恐龙_Python