【Python学习笔记】猜颜色小游戏

  • 前言
  • 一、算法原理
    • 1. 生成器部分
    • 2. 检测器部分
  • 二、代码
  • 过程BUG汇总笔记
  • 总结

前言


最近馋世界游戏大全51,心血来潮用Python写了个猜颜色,顺便扩展了难度(颜色数和可重复性)

一、算法原理


1. 生成器部分

利用ramdom库生成随机数列,并且用字典计数来保证最大重复值

2. 检测器部分

检测包括"全部正确"和"部分正确",全部正确即位置,字符内容均相同,部分正确可以通过字典计数,生成颜色字典输入颜色字典同一颜色的最小值之和为重合颜色数,再减去全部正确数即为部分正确数

二、代码


代码如下(复制直接玩 美滋滋):

import random
n = 6
t = 1
number = 0
gamestr = ''
guessstr = ''
break_flag = False
color = ['红','橙','黄','绿','青','蓝','紫']
color3 = ['红','橙','黄','绿','青','蓝','紫']
colordict = {'红':0,'橙':0,'黄':0,'绿':0,'青':0,'蓝':0,'紫':0}def Getnumber():global numbernumber = int(input('猜谜个数:'))while number < 0:print('你输入数非正整数,闹呢?请重新输入!')number = int(input('猜谜个数:'))return(number)def repeatability(number):repeatability = int(input('最多重复个数:'))while (repeatability < 0)or(repeatability > number):print('不合规范')repeatability = int(input('最多重复个数:'))def Generate():global nglobal colordictb = random.randint(0,n)genout = color[b]colordict[color[b]]+=1if colordict[color[b]] == repeatability:color.pop(b)n -= 1return genoutdef ALLTRUECALI(guessstr,number):ATC=0for i in range(0,number):if gamestr[i] == guessstr[i]:ATC += 1return ATCdef HALFTRUECALI(guessstr,number,ATC):HTC=0color2 = ['红', '橙', '黄', '绿', '青', '蓝', '紫']guess_dict={'红':0,'橙':0,'黄':0,'绿':0,'青':0,'蓝':0,'紫':0}for i in range(0,number):guess_dict[guessstr[i]] += 1for i in range(0,7):c = min(guess_dict[color2[i]],colordict[color2[i]])HTC += cHTC -= ATCreturn HTCdef fault_calibrate(guessstr,ATC,HTC):print('本次猜测,%d个全对,%d个半对'%(ATC,HTC))def Errordetector(guessstr):global break_flagbreak_flag = Falseif len(guessstr)!=len(gamestr):break_flag = Trueprint('字符错误,请重新输入')else:for i in range(0,number):count = 0for j in range(0,7):if guessstr[i] == color3[j]:count += 1if count != 1:print('您输入的颜色不在范围内,请重新输入')break_flag = Truebreakreturn(break_flag)def main():number = Getnumber()repeatability(number)global gamestrfor i in range(0,number):gamestr += Generate()first = Trueguessstr = ""t = 0while (guessstr != gamestr)or(first == True):guessstr = input('请输入你的猜测:')first = Falsebreak_flag = Errordetector(guessstr)if break_flag:continuet += 1ATC = ALLTRUECALI(guessstr, number)HTC = HALFTRUECALI(guessstr, number, ATC)fault_calibrate(guessstr, ATC, HTC)print('恭喜您,共耗费%d次机会猜测成功!'%(t))if __name__=='__main__':main()

过程BUG汇总笔记


  1. 变量名太乱了,导致最早调用错误
  2. 函数体内想要改变全局变量需要声明global
  3. random.randint()函数的取值是闭区间,与range()左闭右开不同

总结


初学Python,至少能玩!但是函数用的满僵的,写的也不好看,望大佬斧正 :3

【Python学习笔记】猜颜色小游戏相关推荐

  1. Python学习之猜数字小游戏

    print('###### nice to see you , Mr.Feng') temp = input("不妨猜一下我现在想的是哪个数字:") guess = int(tem ...

  2. Python编写的猜数字小游戏~~~基于Tkinter库

    Python编写猜数字小游戏 编写猜数字小游戏 一.界面 1.PyQt5 2. wxPython 3. PyGTK 二.Tkinter功能 ① 15种核心组件 ② 组件的放置和排版(pack,grid ...

  3. Python实现烧脑猜数字小游戏——超详细注解

    文章目录 一.需求分析 二.编程思路 三.完整代码 引用源自   本例是我在中国MOOC学习基础语法时做到的小例子,这里加上我的理解和一些注释分享给大家希望能够对大家有所帮助~ 一.需求分析 案例:烧 ...

  4. Unity学习笔记-切水果小游戏第一发

    楼主学习Unity的时间有限,每天最多能抽出1小时看看,主要还是周末的时间了. 最近打算开发几个小游戏练练手.最简单的水果忍者就被我相中了,来吧,骚年,一起来一发. 先分析下切水果的几个要点: 1)手 ...

  5. 韩顺平 javascript教学视频_学习笔记17_js超级玛丽小游戏

    采用面向对象思想设计超级马里奥游戏人物 怎么用通过按键,来控制图片的位置 这个小游戏,用面向对象会很方便,不用面向对象会很麻烦很麻烦,比如以后要讲解的坦克大战的游戏,要是用纯的面向过程或函数式的方式写 ...

  6. python购物街价格竞猜_Python学习笔记 - 数字竞猜小游戏

    知识点 Python判断字符串的主要用法:str.isalnum():所有字符都是数字或字母 str.isalpha():所有字符都是字母 str.isdigit():所有字符都是数字,并且为整型数字 ...

  7. Python学习笔记-猜数字游戏(学习语法)

    程序运行截图如下: 源码如下: import randomprint("Let's play a funny game") num=random.randint(100,99999 ...

  8. Python学习之While语句小游戏

    import random secret = random.randint(1,10) temp = input('不妨猜一下我现在心里想的数字:') guess = int(temp) while ...

  9. python练习:猜价钱小游戏

    #猜价钱 trueprice = 202 price = input("Please guess the price:") while (int(price) != truepri ...

最新文章

  1. ldd3笔记_3_编译模块
  2. 智能机器人比巴和智伴哪个好_扫地机器人和吸尘器哪个好?
  3. export default用法vue_Vue组件通信—provide/inject
  4. C++ COM编程之接口背后的虚函数表
  5. 华科计算机课程设计,华中科大操作系统课程设计报告(附源码).doc
  6. 【LeetCode笔记(水)】s = null 与 s.length() == 0
  7. haproxy安装配置及haproxy+keepalived简单配置
  8. JavaSE10:日期时间类、java比较器、System类、Math类、大数类
  9. linux有名管道大小,Linux中的pipe与named pipe(FIFO),即管道和命名管道
  10. 七种程序员的基本技能
  11. 河南科技大学计算机科学与技术专业多少分,2016年河南科技大学计算机科学与技术专业在陕西录取分数线...
  12. 湖北省首条短途运输航线“荆门—武汉”航线运营
  13. 快速合并所有txt文档
  14. 用css制作旋转的立方体
  15. 《NVMe-over-Fabrics-1_0a-2018.07.23-Ratified》阅读笔记(4)-- Controller Architecture
  16. 陪着时光,走过羊肠阡陌
  17. 水浒歪传--郭德纲相声
  18. 大数据基础——HDFS(分布式文件系统)
  19. matlab中sqp的算法原理_最优化方法及其Matlab程序设计 马昌凤
  20. mysqlyog mysql8.012_瑞昱网卡驱动-Realtek瑞昱RTL-81xx系列网卡驱动(Win8)8.012.0304.2013版-东坡下载...

热门文章

  1. 加密货币工具和算法大合集
  2. 对话,对话,全是超级爆笑对话
  3. (R,线性回归)R语言里的模型诊断图(Residuals vs Fitted,Normal QQ , Scale-Location ,Residuals Leverage)
  4. Activity七大生命周期详解
  5. MySQL之存储过程及函数的使用
  6. doodoo.js发布1.1.0 -- 中文最佳实践Node.js Web快速开发框架,支持Koa.js, Express.js中间件。包含多项功能改进,及Bug修复。...
  7. Java学习day07-Java高级编程-多线程
  8. 一个简单的app爬虫:对近期热播剧《三十而已》进行知乎app关键词搜索
  9. python开发前景如何
  10. 翡翠手链华丽多彩而不庸俗