根据描述设计Game类:设计一个猜数游戏,游戏规则:先预设一个整数x,让用户通过键盘输入所猜的数,如果大于x,显示“遗憾,太大了”;小于预设的数,显示“遗憾,太小了”,如此循环,直至猜中该数,显示“尝试N次后,你猜对了”,其中N是用户输入数字的次数。
要求:
- 类的属性包括:N(记录用户输入数字的次数),x(预设的整数)
- 对象方法包括:guess(self)
- 使用循环让程序一直跑下去,除非用户猜对了
根据描述设计Game类:设计一个猜数游戏,游戏规则:先预设一个整数x,让用户通过键盘输入所猜的数,如果大于x,显示“遗憾,太大了”;小于预设的数,显示“遗憾,太小了”,如此循环,直至猜中该数,显示“尝试N次后,你猜对了”,其中N是用户输入数字的次数。
要求:
# -*- coding: utf-8 -*-
import random
class GuessNumber:
"""猜数游戏
游戏开始前,电脑会在[low,up]闭区间内随机选中一个整数x作为猜测目标。
游戏开始后,游戏玩家给出一个猜测值,并根据电脑的反馈给出下一个猜测值,直至猜中为止。
以猜测次数N作为游戏考核指标。
"""
def __init__(self, low=1, up=256):
"""构造函数
low - 猜测目标下限,默认值为1
up - 猜测目标上限,默认值为256
"""
self.low = low
self.up = up
self.x = random.randint(self.low, self.up)
self.N = 0
def guess(self):
"""读取游戏玩家猜测的数字"""
while True:
y_str = input('请输入你猜测的数字,该数字应在闭区间[%d,%d]范围内,按回车键确认:'%(self.low, self.up))
try:
y = int(y_str)
except:
print('%s不是一个合乎规则的整数,请重新输入!'%y_str)
continue
if y < self.low or y > self.up:
print('该数字超出了闭区间[%d,%d]的范围,请重新输入!'%(self.low, self.up))
else:
self.N += 1
break
return y
def start(self):
"""开始游戏"""
while True:
y = self.guess()
if y > self.x:
print('遗憾,太大了')
elif y < self.x:
print('遗憾,太小了')
else:
print('尝试%d次后,你猜对了'%self.N)
break
print('游戏结束!')
if __name__ == '__main__':
game = GuessNumber()
game.start()
下面是一次测试的记录:
请输入你猜测的数字,该数字应在闭区间[1,256]范围内,按回车键确认:ty
ty不是一个合乎规则的整数,请重新输入!
请输入你猜测的数字,该数字应在闭区间[1,256]范围内,按回车键确认:300
该数字超出了闭区间[1,256]的范围,请重新输入!
请输入你猜测的数字,该数字应在闭区间[1,256]范围内,按回车键确认:128
遗憾,太大了
请输入你猜测的数字,该数字应在闭区间[1,256]范围内,按回车键确认:64
遗憾,太大了
请输入你猜测的数字,该数字应在闭区间[1,256]范围内,按回车键确认:32
遗憾,太大了
请输入你猜测的数字,该数字应在闭区间[1,256]范围内,按回车键确认:16
遗憾,太大了
请输入你猜测的数字,该数字应在闭区间[1,256]范围内,按回车键确认:8
遗憾,太大了
请输入你猜测的数字,该数字应在闭区间[1,256]范围内,按回车键确认:4
尝试6次后,你猜对了
游戏结束!