2016年8月23日 星期二

python 程式設計50題測試範例-8

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 }
               { }  <--- 空集合
              
輸入範例一
N1A{1}
輸出範例一
{},{1}


輸入範例二
N=2A{1,2}
輸出範例二
{},{1},{2},{1,2}
輸入範例三
N=3A{1,2,3}
輸出範例三
{},{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}
輸入範例四
N=4A{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]
------------------------------
>>> 

沒有留言:

張貼留言

Messaging API作為替代方案

  LINE超好用功能要沒了!LINE Notify明年3月底終止服務,有什麼替代方案? LINE Notify將於2025年3月31日結束服務,官方建議改用Messaging API作為替代方案。 //CHANNEL_ACCESS_TOKEN = 'Messaging ...