45. Python 小练习

  • 2020 年 1 月 13 日
  • 筆記

需求1:

ABCD * 9 = DCBA

通过计算方法,给我们计算出 A = ?  B = ?  C = ?  D = ?

A: 1-9

B: 0-9

C: 0-9

D: 1-9

A != B != C != D

代码:

class CountNumber(object):      def __init__(self):          print("ABCD * 9 = DCBA; A != B != C != D")      def numAbcd(self):          for A in range(1, 10):              for B in range(0, 10):                  for C in range(0, 10):                      for D in range(1, 10):                          if ( A * 1000 + B * 100 + C * 10 + D) * 9 == (D * 1000 + C * 100 + B * 10 + A):                              print("{0}{1}{2}{3} * 9 = {4}{5}{6}{7}".format(A, B, C, D, D, C, B, A))                              print("A = {0}, B = {1}, C = {2}, D = {3}".format(A, B, C, D))        def main():      countNumber = CountNumber()      countNumber.numAbcd()    if __name__ == '__main__':      main()

需求2:

_____________

|_A_|_B_|_C_|

|_D_|_E_|_F_|

|_G_|_H_|_I_|

A, B, C, D, E, F, G, H, I 必须是1-9数字,且不能重复

所有的行,列,对角线的和都为15

class NinePaper(object):      def __init__(self):          self.numbers = list()          for i in range(1, 10):              self.numbers.append(i)          print("numbers = {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 == D+E+F == G+H+I == A+D+G == B+E+H == C+F+I == A+E+I == C+E+G == 15:                                                  print('''                                              _____________                                              |_{0}_|_{1}_|_{2}_|                                              |_{3}_|_{4}_|_{5}_|                                              |_{6}_|_{7}_|_{8}_|                                                  '''.format(A, B, C, D, E, F, G, H, I))          def main():      ninePaper = NinePaper()      ninePaper.run()    if __name__ == '__main__':      main()

需求3:

将文件passwd的内容,写入新的文件并排序,新文件名为newpasswd

import codecs    import os      class SortPasswd(object):      def __init__(self):          self.passwd = "passwd"          self.newpasswd = "newpasswd"          self.contextList = list()          if not os.path.exists(self.passwd):              print("please download passwd from linux.")              exit(1)          print("sort file is :{0}".format(self.passwd))          print("sorted file is :{0}".format(self.newpasswd))      def getContextList(self):          with codecs.open("passwd") as fr:              self.contextList += sorted(fr.readlines(), key=lambda line:int(line.split(":")[2]), reverse=False)      def writeContextList(self):          with codecs.open("new_passwd", "w") as fw:              fw.writelines(self.contextList)        def main():      sortpasswd = SortPasswd()      sortpasswd.getContextList()      sortpasswd.writeContextList()    if __name__ == '__main__':      main()