#!/usr/bin/env python
# coding=utf-8
'''
一个列表[1,2,3,4,5,6,7,8,9],取出两个数,积为24,符合条件删除这两个数,
从剩下的值里再取出两个数,和为10,符合条件删除这两个数,再取出两个数,
商为3,符合条件删除这两个数,再取出两个数,差为1,符合条件删除这两个数,
求最后剩余的那个数
'''
A = list(range(1, 10))
def op(alist, func, result):
for i in alist:
sublist = [n for n in alist if n != i]
for j in sublist:
if func(i, j) == result:
return [n for n in sublist if n != j]
raise Exception('Numbers not found! Function or Result Error')
def main():
a = op(A, lambda x, y: x*y, 24)
b = op(a, lambda x, y: x+y, 10)
c = op(b, lambda x, y: x/y, 3)
d = op(c, lambda x, y: x-y, 1)
print('The remaining number is:', d[0])
if __name__ == '__main__':
main()
or
#!/usr/bin/env python3 # python 3.6+
'''
一个列表[1,2,3,4,5,6,7,8,9],取出两个数,积为24,符合条件删除这两个数,
从剩下的值里再取出两个数,和为10,符合条件删除这两个数,再取出两个数,
商为3,符合条件删除这两个数,再取出两个数,差为1,符合条件删除这两个数,
求最后剩余的那个数
'''
A = list(range(1, 10))
def truncate(alist, op, result):
for i in alist:
sublist = [n for n in alist if n != i]
for j in sublist:
if eval(f'{i}{op}{j}') == result:
return [n for n in sublist if n != j]
raise Exception('Numbers not found! Function or Result Error')
def main():
a = truncate(A, '*', 24)
b = truncate(a, '+', 10)
c = truncate(b, '/', 3)
d = truncate(c, '-', 1)
print('The remaining number is:', d[0])
if __name__ == '__main__':
main()
or
#!/usr/bin/env python3 # python 3.6+
'''
一个列表[1,2,3,4,5,6,7,8,9],取出两个数,积为24,符合条件删除这两个数,
从剩下的值里再取出两个数,和为10,符合条件删除这两个数,再取出两个数,
商为3,符合条件删除这两个数,再取出两个数,差为1,符合条件删除这两个数,
求最后剩余的那个数
'''
A = list(range(1, 10))
class MyList(list):
def tc(self, op, result):
"""if the `op` of two numbers in this list is equal to `result`
delete them and return the sub list
"""
for i in self:
sublist = [n for n in self if n != i]
for j in sublist:
if eval(f'{i}{op}{j}') == result:
return self.__class__([n for n in sublist if n != j])
raise Exception('Numbers not found! Function or Result Error')
def main():
d = MyList(A).tc('*', 24).tc('+', 10).tc('/', 3).tc('-', 1)
print('The remaining number is:', d[0])
if __name__ == '__main__':
main()