Python 官网:https://www.python.org/
-
Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
—— 华罗庚

这是我参加“14天阅读挑战赛”第一周第二篇

点击查看“14天阅读挑战赛”详情,《趣学算法第二版》学习打卡。
书中说“算法之美”!确实,追求算法是一种美的享受,不断的优化迭代,让最初“能实现”的算法,也可以“进化”得灵动。
看到学习群里有做“猜数字”游戏练习的,大致阅读了其源码,理解了游戏的规则。用从小玉老师直播中学到的,组织设计数据结构,捋清数据关系、程序逻辑,设计算法,持续优化,最终做出了这个“猜数字”小游戏。
游戏规则:猜数字游戏,机器随机选择一个数位各不相同的四位数,您可以有七次机会猜对。七次不中,Game over!猜测次数越少,得分越高。一次猜对100分,七次不中0分。
猜错提示字符说明,“R”是数字位置都猜对,“B”是除R以外猜对的数字(位置不对)。前面的数字是数字个数(1~4)。
经QQ学习群学友“无令“提点,修缮了代码中的大量bug,重新上传效果截屏图片。比如前面的猜数提示居然搞成了“猜数(如 1314):”,竟然有两个相同数字的提示来做示例!😓😓
游戏效果
在学习QQ群友的指导下,加入了对玩家错误数字输入的提示。在些对他表示感谢😊
错误提示信息截屏图
我大多在安卓手机上学习代码,昨天才发现,Windows是不支持033转义字符控制的,在Windows上跑我带033转义字符控制的代码,看起来麻嘎嘎的一遍。以前都没没注意到,源于照顾对本段源码感性趣的小伙伴,去除了033转义字符串,已打包上传CSDN。
无转义字符界面效果
有喜欢的小伙伴可以自行去CSDN下载,或给我留言索取。
mypycolor完整源码(点此跳过源码)(bug修复 2022-10-23)
#!/sur/bin/nve python
# coding: utf-8
'''
Author:梦幻精灵_cq
date:2022-10-22
'''
from time import localtime, time
class Guess_num:
'''猜数字游戏:\n 机器随机选择一个数位各不相同的四位数,您可以有七次机会猜对。七次不中,Game over!第一次猜对满分100,猜测次数越少,得分越高。七次不中0分。\n 游戏用RB字符提示您所猜数字对的位数,“R”是数位数字都猜对,“B”是除R以外猜对的数字(位置不对)。RB前面的数字是猜对的数字个数(1~4)。'''
def __init__(self):
from random import sample
while True:
choice = "".join(sample('0123456789', k=4))
if choice[0] != '0':
self.target = choice
break
while True:
self.play() # 启动游戏。
if not input(f"\n{' 直接回车退出,任意键继续。'.center(37, '~')}"):
break
def play(self):
''' 游戏 '''
blue = '\033[34m'
red = '\033[91;5m'
gray = '\033[90m'
green = '\033[92;5m'
offall = '\033[0m'
print(f"\n\n{gray}{'='*19}{green} 猜数字游戏 {gray}{'='*19}\n\n{gray}{self.__doc__}{offall}\n")
for i in range(7, 0, -1):
while True:
number = self.input_num()
if self.isnumber(number):
break
guess = self.iswin(number, self.target)
if guess is True:
print(f"\n{green}{'~'*19} 恭喜猜中!{'~'*20}{offall}\n\n{'':>15}{blue}您的得分:{green}{100*i/7:3.2f}{offall}\n\n{'':>16}目标数字:{green}{self.target}{offall}\n\n{green}{'~'*50}{offall}")
return
else:
print(f"{gray}{f' 您还能猜{i-1}次。':~>16}提示:{blue}{guess}{gray} {'~'*17}{offall}\n")
print(f"\n\n{red}{' Game over!'.center(49, '~')}\n\n{gray}{'~'*17} 您的得分:{red}0 {gray}{'~'*20}\n\n{'':>18}目标数字:{green}{self.target}{offall}\n\n{'~'*50}{offall}\n")
def iswin(self, number, target):
''' 判断猜中 '''
if number == target:
return True
r = b = 0
for i in range(4):
if number[i] == target[i]:
r += 1
elif number[i] in target:
b += 1
return f"{r}R{b}B"
def input_num(self):
''' 数字输入 '''
blue = '\033[34m'
red = '\033[91;5m'
gray = '\033[90m'
offall = '\033[0m'
while True:
number = input(f"{'':>11}{blue}猜数({gray}如 8976{blue}):{offall}").strip()
if not self.isnumber(number):
continue
return number
def isnumber(self, number):
''' 判断错误数字 '''
red = '\033[91;5m'
offall = '\033[0m'
if not number.isdigit() or len(number) != 4 or number[0] == '0' or len(set(number)) < 4:
print(f"{red}{' 输入错误!'.center(45, '~')}{offall}\n")
return False
return True
if __name__ == '__main__':
green = '\033[92;5m'
blue = '\033[34m'
offall = '\033[0m'
t0 = time()
Guess_num()
print(f"\n{'':>16}游戏用时{green}{(time()-t0)/60:5.2f}{offall} 分。")
y, M, d, h, m, s = localtime()[:6]
input(f"{'~'*14} {blue}{y}-{M:02}-{d:02}{offall} {green}{h:02}:{m:02}:{s:02}{offall} {'~'*15}")
__上一篇:__ 猜数字小游戏——算法学习
__下一篇:__
我的HOT博:
- New:给定字符串提取姓名(字符串、list、re“零宽断言”)(1051阅读)
- New:我的 Python.color() (Python 色彩打印控制)(1125阅读)
- New:python清屏(1290阅读)
- 回车符、换行符和回车换行符(1322阅读)
- Linux 脚本文件第一行的特殊注释符(井号和感叹号组合)的含义(1171阅读)
- pandas 数据类型之 Series(1224阅读)
- 聊天消息敏感词屏蔽系统(字符串替换 str.replace(str1, *) )(1270阅读)
- 练习:银行复利计算(用 for 循环解一道初中小题)(1188阅读)
- pandas 数据类型之 DataFrame(2136阅读)
- :班里有人和我同生日难吗?(蒙特卡洛随机模拟法)(2180阅读)
- Python字符串居中显示(2359阅读)
- 练习:求偶数和、阈值分割和求差( list 对象的两个基础小题)(1665阅读)
- 用 pandas 解一道小题(2007阅读)
- 可迭代对象和四个函数(1083阅读)
- “快乐数”判断(1252阅读)
- 罗马数字转换器(构造元素取模)(2159阅读)
- Hot:罗马数字(转换器|罗生成器)(4750阅读)
- Hot:让QQ群昵称色变的代码(36654阅读)
- Hot:斐波那契数列(递归| for )(4071阅读)
- 柱状图中最大矩形(1663阅读)
- 排序数组元素的重复起止(1258阅读)
- 电话拨号键盘字母组合(1402阅读)
- 密码强度检测器(1986阅读)
- 求列表平衡点(1837阅读)
- Hot: 字符串统计(4308阅读)
- Hot:尼姆游戏(聪明版首发)(3493阅读)尼姆游戏(优化版)(1175阅读)
推荐条件 点阅破千
回目录
精品文章:
- 好文力荐:《python 完全自学教程》齐伟书稿免费连载
- OPP三大特性:封装中的property
- 通过内置对象理解python'
- 正则表达式
- python中“*”的作用
- Python 完全自学手册
- 海象运算符
- Python中的 `!=`与`is not`不同
- 学习编程的正确方法
来源:老齐教室
回目录
Python 入门指南【Python 3.6.3】
好文力荐:
-
全栈领域优质创作者——寒佬(还是国内某高校学生)好文:《非技术文—关于英语和如何正确的提问》,“英语”和“会提问”是学习的两大利器。
CSDN实用技巧博文: