标签:
最近实现了一个猜数字的游戏,用python写的,本人python技术很渣,在不断百度的情况下,总算完成了这个猜数字的游戏,写上一点心得,也许以后有用。
猜数字游戏规则特别简单,就是用户猜一个4位数字,如果位置正确则记为A,数字正确则记为B(例如:被猜数字1234,用户输入了1456;则返回1A1B)
首先,我定义了一个猜数字的大类,写入了初始化方法后,加了一个生成4位不重复数字的方法,具体逻辑是这样:首先生成一个10位不重复的序列,然后利用List的pop方法,返回结果,然后把每个结果用字符串累加的方法加起来,用while循环控制次数,最后得到4位不重复的数字字符串,其它额外要求根据实际情况增加。这里用到了random模块,所以要import random
第一步:
import random
class guessNumber():
‘‘‘
猜数字游戏:
1、用户输入一组数字后,返回以*A*B的方式返回结果
2、1A代表有一个正确的数字位置正确,1B代表有一个数字正确,但是位置不正确
‘‘‘
def __init__(self):
self.guess_number = ‘‘ #被猜测的数字
#生成随机不重复的4位数,包括首位位0的数字,如(0567)
def genRandomNum(self):
if self.guess_number == ‘‘: #对象中guess_number参数有没有纸,如果有就直接返回传入的值
result = ‘‘ #生成的数字
l1 = [str(i) for i in range(10)] #l1是一个类似[0,1,2,3,4,5,6,7,8,9]序列
while(result.__len__() < 4): #用while循环控制生成数字的位数
tmp = l1.pop(random.randrange(l1.__len__())) #用list的pop方法返回对应的数字,这样可以避免重复
if tmp == ‘0‘: #判断首位是否为0,如果是0,那么需要加上之前去除的元素
l1.append(‘0‘) #把之前删除的“0”重新加上
tmp = l1.pop(random.randrange(l1.__len__())) #再来一次
result += tmp #字符串累加,响应while的循环条件,到4位时停止循环
else:
result += tmp
else:
result = str(self.guess_number) #如果已经设置了guess_number,那么直接返回设置的结果
return result #返回生成的4位不重复的数字(仅限于自动生成,其它途径传入的不算)
if __name__ == ‘__main__‘:
guess = guessNumber()
target = guess.genRandomNum()
print(target)