8、輸入一變數N , 再輸入N 個數字成為一個含有N 個數的
集合A
, 然後輸出所有這個A 集合的子集合。
Ex: N=3, A { 1, 2, 3 }
ANS: { 1 }
{ 2 }
{ 3 }
{ 1, 2 }
{ 1, 3 }
{ 2, 3 }
{ 1, 2, 3 }
{ } <--- 空集合
輸入範例一
|
N=1,A={1}
|
輸出範例一
|
{},{1}
|
輸入範例二
|
N=2,A={1,2}
|
輸出範例二
|
{},{1},{2},{1,2}
|
輸入範例三
|
N=3,A={1,2,3}
|
輸出範例三
|
{},{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}
|
輸入範例四
|
N=4,A={1,2,3,4}
|
輸出範例四
|
{},{1},{2},{3},{4},{1,2},{1,3},{1,4},{2,3},{2,4},{3,4},{1,2,3},{1,2,4}
{1,3,4}{2,3,4},{1,2,3,4}
|
程式
#coding:Big5
def powerset(s):
x = len(s)
for i in range(1 << x):
print (i,"=",[s[j] for j in range(x) if (i & (1 << j))])
#8、輸入一變數N , 再輸入N 個數字成為一個含有N 個數的
# 集合A , 然後輸出所有這個A 集合的子集合。
print("8、輸入一變數N , 再輸入N 個數字成為一個含有N 個數的")
print(" 集合A , 然後輸出所有這個A 集合的子集合。")
print()
print ("輸入一數字,共有N個變數")
s1=[] # 串列型態 (list)
while True:
P = input('請輸入 N (整數) :')
try:
P = int(P)
except ValueError:
print ('這是不合法的輸入. 請再輸入一次...')
continue
if ( P > 0 ):
break
print ("輸入共有N個數字")
i=1
while (i<=P) :
N = input('請輸入整數 :')
try:
N= int(N)
except ValueError:
print ('這是不合法的輸入. 請再輸入一次...')
continue
if ( N >= 0 ):
s1.append(N)
i=i+1
continue
print(s1)
print()
powerset(s1)
print("------------------------------")
結果:
================== RESTART: D:/程式語言 Python 入門/50題/Ex50-8.py ==================
8、輸入一變數N , 再輸入N 個數字成為一個含有N 個數的
集合A , 然後輸出所有這個A 集合的子集合。
輸入一數字,共有N個變數
請輸入 N (整數) :5
輸入共有N個數字
請輸入整數 :2
請輸入整數 :6
請輸入整數 :9
請輸入整數 :8
請輸入整數 :4
[2, 6, 9, 8, 4]
0 = []
1 = [2]
2 = [6]
3 = [2, 6]
4 = [9]
5 = [2, 9]
6 = [6, 9]
7 = [2, 6, 9]
8 = [8]
9 = [2, 8]
10 = [6, 8]
11 = [2, 6, 8]
12 = [9, 8]
13 = [2, 9, 8]
14 = [6, 9, 8]
15 = [2, 6, 9, 8]
16 = [4]
17 = [2, 4]
18 = [6, 4]
19 = [2, 6, 4]
20 = [9, 4]
21 = [2, 9, 4]
22 = [6, 9, 4]
23 = [2, 6, 9, 4]
24 = [8, 4]
25 = [2, 8, 4]
26 = [6, 8, 4]
27 = [2, 6, 8, 4]
28 = [9, 8, 4]
29 = [2, 9, 8, 4]
30 = [6, 9, 8, 4]
31 = [2, 6, 9, 8, 4]
------------------------------
>>>
沒有留言:
張貼留言