五次机会猜测100以内随机正整数,我用初通的python类封装了代码并清屏上一次猜测提示,难有所增加咯。
(笔记模板由python脚本于2023年11月09日 12:31:30创建,本篇笔记适合掌握python循环和条件分支语句用法,初通python类的coder翻阅)
Python 官网:https://www.python.org/
Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
地址:https://lqpybook.readthedocs.io/
自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
—— 华罗庚
本文质量分:
CSDN质量分查询入口:http://www.csdn.net/qc
【题目来源于 CSDN 问答社区提问“if语句实操(猜数字)”】
此为经典题目,差不多编程学习都有练习过,知识点就是if判断+循环执行。逻辑简单易懂,更谈不上算法高深,在此我也不啰嗦解析了。
我在传统写法的基础上清屏了上一次猜数得到的提示,需要自己脑补记忆,使得玩耍的难度稍有增加。另我用python 3.x推崇的字符串插值格式化,编辑了游戏文本界面,稍微有了那么点儿顺眼。
一般写法代码
#!/sur/bin/nve python
# coding: utf-8
'''
本案例的猜数字游戏是针对1-100以内的整数数字进行猜测,设定猜测的数字可通过input()函数接收,在案例描述中规定玩家只能有5次机会进行猜数,因此可使用for循环与rang()函数控制循环次数,在进行猜数过程中还需要对玩家输入的内容进行判断,可以使用if-elif 语句判断,使用isdigi()方法判断玩家输入的内容是否是数字;使用比较运算符判断玩家输入的数字是否符合在规定范围内;判断玩家输入的数字是否与设定猜测的数字相等,如果相等输出“恭喜你用了x次猜对了”,当输入次数达到5次时,则输出“很遗憾,x次机会已用尽,游戏结束,答案为y”。
根据以 上分析可整理出以下实现思路:'''
#(1)使用input()函数接收用户设定猜数的数值。
from random import randint
target = randint(1, 100) # 我认为(1)题目不妥,目标数值怎么可以从键盘输入哩。我这里改为机器随机出数(1~00)。
#(2)使用for循环控制玩家猜测的次数。
for i in range(1, 6):
while True:
#(3)使用input()函数接收玩家输入的数据。
guess = input(f"\033[2J\n{' 猜数字游戏 ':=^35}\n\n\n{' (输入1~100的整数) ':-^35}\n\n{'您猜?_':>16}").strip()
#(5)判断输入的数据是否在指定范围内。
#(4)判断输入数据的数据是否为数字。
if not guess.isdigit():
input(f"\n{' 请输入数字!':~^34}")
elif not 1 <= int(guess) <= 100:
input(f"\n{' 输入超出范围!':~^33}")
else:
guess = int(guess)
break # 输入无误,退出while循环。
'''(6)判断玩家输入的数据是否与设定猜测的数字-致,如果-致使用break语句跳出循环。
(7)如果玩家输入的数据与设定猜测的数字不一-致,给出相应提示。'''
if guess == target:
print(f"\033[2J\n{' 猜数字游戏 ':=^35}\n\n\n{f' 恭喜你用了{i}次猜对了!':~^30}\n\n")
exit() # 退出程序。
elif guess < target:
input(f"\n{f' 很遗憾,您猜小了!':~^31}")
elif guess > target:
input(f"\n{f' 很遗憾,您猜大了!':~^31}")
#(8)当玩家猜测5次后,仍没有猜对,结束程序。
print(f"\033[2J\n{' 猜数字游戏 ':=^35}\n\n\n{' 很遗憾,5次机会已用尽!':^28}\n\n{f' 游戏结束,答案为{target}。':~^31}\n\n")
我用我初通的python类,对猜数字游戏进行了封装,让代码更紧凑易读。
Python类封装的代码
#!/sur/bin/nve python
# coding: utf-8
'''
本案例的猜数字游戏是针对1-100以内的整数数字进行猜测,设定猜测的数字可通过input()函数接收,在案例描述中规定玩家只能有5次机会进行猜数,因此可使用for循环与rang()函数控制循环次数,在进行猜数过程中还需要对玩家输入的内容进行判断,可以使用if-elif 语句判断,使用isdigi()方法判断玩家输入的内容是否是数字;使用比较运算符判断玩家输入的数字是否符合在规定范围内;判断玩家输入的数字是否与设定猜测的数字相等,如果相等输出“恭喜你用了x次猜对了”,当输入次数达到5次时,则输出“很遗憾,x次机会已用尽,游戏结束,答案为y”。
根据以 上分析可整理出以下实现思路:'''
class Numgame:
def __init__(self):
#(1)使用input()函数接收用户设定猜数的数值。
from random import randint
self.target = randint(1, 100) # 我认为(1)题目不妥,目标数值怎么可以从键盘输入哩。我这里改为机器随机出数(1~00)。
def _guess(self):
while True:
#(3)使用input()函数接收玩家输入的数据。
guess = input(f"\033[2J\n{' 猜数字游戏 ':=^35}\n\n\n{' (输入1~100的整数) ':-^35}\n\n{'您猜?_':>16}").strip()
#(5)判断输入的数据是否在指定范围内;(4)判断输入数据的数据是否为数字。
if not guess.isdigit():
input(f"\n{' 请输入数字!':~^34}")
elif not 1 <= int(guess) <= 100:
input(f"\n{' 输入超出范围!':~^33}")
else:
return int(guess) # 输入无误,退出while循环。
def play(self):
#(2)使用for循环控制玩家猜测的次数。
for i in range(1, 6):
guess = self._guess() # 调用_guess方法,获取玩家猜数。
#(6)判断玩家输入的数据是否与设定猜测的数字一致,如果一致使用break语句跳出循环。
if guess == self.target:
print(f"\033[2J\n{' 猜数字游戏 ':=^35}\n\n\n{f'【Target: {self.target}】':^38}\n{'':﹊^20}\n\n{f' 恭喜你用了{i}次猜对了!':~^30}\n\n")
exit() # 退出程序。
#(7)如果玩家输入的数据与设定猜测的数字不一-致,给出相应提示。
elif guess < self.target:
input(f"\n{f' 很遗憾,您猜小了!':~^31}")
elif guess > self.target:
input(f"\n{f' 很遗憾,您猜大了!':~^31}")
#(8)当玩家猜测5次后,仍没有猜对,结束程序。
print(f"\033[2J\n{' 猜数字游戏 ':=^35}\n\n\n{' 很遗憾,5次机会已p用尽!':^28}\n\n{f' 游戏结束,答案为{self.target}。':~^31}\n\n")
if __name__ == '__main__':
Numgame().play() # 实例化猜数字游戏类并调用play方法开始游戏。
我的HOT博:
本次共计收集 246 篇博文笔记信息,总阅读量 40.46w,平均阅读量 1644。已生成 16 篇阅读量不小于 4000 的博文笔记索引链接。数据采集于 2023-10-12 05:41:03 完成,用时 4 分 41.10 秒。
精品文章:
来源:老齐教室
◆ Python 入门指南【Python 3.6.3】
好文力荐:
CSDN实用技巧博文: