九宮格と関数


一、九宮格
1、第一の方式
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time    : 2018/1/28 17:25
# @Author  : zhouyuyao
# @File    : nine.py
# PyCharm 2017.3.2 (Community Edition)
# Build #PC-173.4127.16, built on December 19, 2017
# JRE: 1.8.0_152-release-1024-b8 amd64
# JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
# Windows 10 10.0
# Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) 
# [MSC v.1900 64 bit (AMD64)] on win32

'''
   
___________
|_A_|_B_|_C_|
|_D_|_E_|_F_|
|_G_|_H_|_I _|
  A 1 9,B    1 9   A  ,C    1 9   A B,
        1 9   ,      ,           ,
  :9       ,
  :            15

      ,      10 10  
'''
number = list()
for i in range(1,10):
    number.append(i)

for A in number:
    for B in number:
        for C in number:
            for D in number:
                for E in number:
                    for F in number:
                        for G in number:
                            for H in number:
                                for I in number:
                                    s = set()
                                    s.add(A)
                                    s.add(B)
                                    s.add(C)
                                    s.add(D)
                                    s.add(E)
                                    s.add(F)
                                    s.add(G)
                                    s.add(H)
                                    s.add(I)
                                    if (A+B+C) == (D+E+F) == (G+H+I) == (A+D+G) == (B+E+H) == (C+F+I) == (A+E+I) == (C+E+G) ==15 and len(s)==9:
                                        print("""
______________
|_{0}_|_{1}_|_{2}_|
|_{3}_|_{4}_|_{5}_|
|_{6}_|_{7}_|_{8}_|""".format(A,B,C,D,E,F,G,H,I))

このようなアルゴリズムの実行結果には時間がかかります.
___________
|_2_|_7_|_6_|
|_9_|_5_|_1_|
|_4_|_3_|_8_|

___________
|_2_|_9_|_4_|
|_7_|_5_|_3_|
|_6_|_1_|_8_|

___________
|_4_|_3_|_8_|
|_9_|_5_|_1_|
|_2_|_7_|_6_|

___________
|_4_|_9_|_2_|
|_3_|_5_|_7_|
|_8_|_1_|_6_|

___________
|_6_|_1_|_8_|
|_7_|_5_|_3_|
|_2_|_9_|_4_|

___________
|_6_|_7_|_2_|
|_1_|_5_|_9_|
|_8_|_3_|_4_|

___________
|_8_|_1_|_6_|
|_3_|_5_|_7_|
|_4_|_9_|_2_|

___________
|_8_|_3_|_4_|
|_1_|_5_|_9_|
|_6_|_7_|_2_|

2、第二の方式
class NinePaper(object):
    def __init__(self):
        print('''
             ______________
            |____|____|____|
            |____|____|____|
            |____|____|____|
            A,B,C,E,F,G,H,I,J   1-9,              15
        ''')
        self.numbers=list()
        for i in range(1,10):
            self.numbers.append(i)
        print("number = {0}".format(self.numbers))

    def run(self):
        for A in range(1,10):
            l1=list()
            l1+=self.numbers
            l1.remove(A)
            for B in l1:
                l2=list()
                l2+=l1
                l2.remove(B)
                for C in l2:
                    l3=list()
                    l3+=l2
                    l3.remove(C)
                    for D in l3:
                        l4=list()
                        l4+=l3
                        l4.remove(D)
                        for E in l4:
                            l5=list()
                            l5+=l4
                            l5.remove(E)
                            for F in l5:
                                l6=list()
                                l6+=l5
                                l6.remove(F)
                                for G in l6:
                                    l7=list()
                                    l7+=l6
                                    l7.remove(G)
                                    for H in l7:
                                        l8=list()
                                        l8+=l7
                                        l8.remove(H)
                                        for I in l8:
                                                if A+B+C==E+F+D==H+I+G==A+E+I==B+E+H==C+G+E==A+E+I==C+F+I==15:
                                                    print('''
 ___________
|_{0}_|_{1}_|_{2}_|
|_{3}_|_{4}_|_{5}_|
|_{6}_|_{7}_|_{8}_|
            '''.format(A,B,C,D,E,F,G,H,I))

        # ABC
        # DEF
        # GHI

def main():
    ninePaper=NinePaper()
    ninePaper.run()

if __name__ == '__main__':
    main()

二、関数入門
問題を解決する必要がある場合、問題をモジュールに分解することができます.モジュールは関数です.関数は先に説明してから呼び出すべきです.
def a(args):
    pass

関数コードブロックはdefキーワードで始まり、+関数名+パラメータは最初の行の内容をインデントし、次に作成したコード論理returnキーワード:関数の実行後に返される値passキーワードを表します:何もしないことを表します
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time    : 2018/1/28 21:56
# @Author  : zhouyuyao
# @File    : demon1.py
# PyCharm 2017.3.2 (Community Edition)
# Build #PC-173.4127.16, built on December 19, 2017
# JRE: 1.8.0_152-release-1024-b8 amd64
# JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
# Windows 10 10.0
# Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) 
# [MSC v.1900 64 bit (AMD64)] on win32

def add(args):
    total = 0
    for i in args:
        total += i
    return total

def main():
    number = list()
    s = input("Please input digit like(a+b+c+d): ")
    for num in s.split("+"):     #  +       s   
        number.append(int(num.strip())) # num.strip()        
    print(add(number))         #          number   add  

if __name__ == "__main__":     #        
    main()