问题:
编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34–5 + 67–8 + 9 = 100。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
from functools import reduce operator = { 1 : '+' , 2 : '-' , 0 : '' } base = [ '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' ] def isHundred(num): #转化为8位3进制数,得到运算符数组 arr = [] for index in range ( 8 ): index = 7 - index arr.append(num / / ( 3 * * index)) num - = (num / / ( 3 * * index)) * ( 3 * * index) arr = map ( lambda x: operator[x], arr) #合并得到运算式 formula = reduce ( lambda x, y: x + y, zip (base, arr)) formula = list (formula) formula.append( '9' ) formula = ''.join(formula) #计算运算式结果 res = eval (formula) return res, formula if __name__ = = '__main__' : #所有可能的结果 total = 3 * * 8 for i in range (total): res, formula = isHundred(i) if res = = 100 : print (formula + ' = 100' ) |
结果:
1
2
3
4
5
6
7
8
9
10
11
12
|
/ usr / bin / python3. 5 / home / kang / workspace / Qt3d / test.py 123 + 45 - 67 + 8 - 9 = 100 123 + 4 - 5 + 67 - 89 = 100 123 - 45 - 67 + 89 = 100 123 - 4 - 5 - 6 - 7 + 8 - 9 = 100 12 + 3 + 4 + 5 - 6 - 7 + 89 = 100 12 + 3 - 4 + 5 + 67 + 8 + 9 = 100 12 - 3 - 4 + 5 - 6 + 7 + 89 = 100 1 + 23 - 4 + 56 + 7 + 8 + 9 = 100 1 + 23 - 4 + 5 + 6 + 78 - 9 = 100 1 + 2 + 34 - 5 + 67 - 8 + 9 = 100 1 + 2 + 3 - 4 + 5 + 6 + 78 + 9 = 100 |
下面再看一个小实例:
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
程序源代码:
1
2
3
4
5
6
7
8
9
|
#!/usr/bin/python # -*- coding: UTF-8 -*- l = [] for i in range ( 3 ): x = int ( raw_input ( 'integer:\n' )) l.append(x) l.sort() print l |
以上实例输出结果为:
1
2
3
4
5
6
7
|
integer: 8 integer: 5 integer: 6 [ 5 , 6 , 8 ] |
总结
以上就是小编分享给大家的有关Python的实例,希望对大家有所帮助。有什么问题可以随时留言,小编会及时回复大家的。
原文链接:http://www.cnblogs.com/wkcagd/p/7775102.html