一个猜数字游戏
遇到一个小问题,对于python新手来说,想着尝试尝试…
首先来看一下猜数字游戏的题目,猜一个密码锁:
条件一:6,8,2 一个号码正确,而且位置正确
条件二:6,1,4 一个号码正确,但是位置不正确
条件三:2,0,6 两个号码正确,但是位置都不正确
条件四:7,3,8 没有一个号码正确
条件五:8,7,0 一个号码正确,但是位置不正确
话不多说开始解决,上代码
lis = [[6,8,2],[6,1,4],[2,0,6],[7,3,8],[8,7,0]]#创建一个列表存储这五个条件
class Func:
def condition_1(self):#条件一
for z in range(0, 10):
for y in range(0, 10):
for x in range(0, 10):
if z == lis[0][0] or y == lis[0][1] or x == lis[0][2]:
self.condition_2(x,y,z)
def condition_2(self,x,y,z):#条件二
if (z == lis[1][1] or z == lis[1][2] and z != lis[1][0]) \
or (y == lis[1][0] or y == lis[1][2] and y != lis[1][1]) \
or (x == lis[1][0] or x == lis[1][1] and x != lis[1][2]):
self.condition_3(x,y,z)
def condition_3(self,x,y,z):#条件三
if ((z == lis[2][1] and y == lis[2][2] and x != lis[2][0]) or (
z == lis[2][1] and y == lis[2][0] and x != lis[2][2]) or (
z == lis[2][2] and y == lis[2][0] and x != lis[2][2])) or \
((z == lis[2][2] and x == lis[2][1] and y != lis[2][0]) or (
z == lis[2][2] and x == lis[2][0] and y != lis[2][1]) or (
z == lis[2][1] and x == lis[2][0] and y != lis[2][2])) \
or ((y == lis[2][2] and x == lis[2][1] and z != lis[2][0]) or (
y == lis[2][2] and x == lis[2][0] and z != lis[2][1]) or (
y == lis[2][0] and x == lis[2][1] and z != lis[2][2])) \
and (z != lis[2][0] and y != lis[2][1] and x != lis[2][2]):
self.condition_4(x,y,z)
def condition_4(self,x,y,z):#条件四
if (z != lis[3][0] and z != lis[3][1] and z != lis[3][2]) and \
(y != lis[3][0] and y != lis[3][1] and y != lis[3][2]) and \
(x != lis[3][0] and x != lis[3][1] and x != lis[3][2]):
self.condition_5(x,y,z)
def condition_5(self,x,y,z):#条件五
if (z == lis[4][1] or z == lis[4][2]) or (y == lis[4][0] or y == lis[4][2]) or (
x == lis[4][0] or x == lis[4][1]) and (z != lis[4][0] and y != lis[4][1] and x != lis[4][2]):
print(z, y, x)
cal = Func()
cal.condition_1()
运行结果如下:
>>> 0 4 2