直播课12-25 三个例子

封装函数三个步骤

class CountNumber(object):
    def __init__(self):
    def numberAbcd():

def main():
    countNumber = CountNumber()
    countNumber.numberAbcd()

if __name__ = "__main__" :
    main()

例1

需求:

ABCD * 9 = DCBA
求出ABCD

分析,A的取值范围是1-9
B:0-9
C:0-9
D:1-9

class CountNumber(object):
    '''ABCD * 9 = DCBA
    通过计算机的方法,给我们计算出A = ?  B = ? C = ? D = ?
    A: 1-9
    B: 0-9
    C: 0-9
    D: 1-9
    A != B != C !=D
    '''
    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

需求:

打印九宫格,九宫格的每行、列、对角线和为15

class NinePaper(object):
    def __init__(self):
        print('''
                    _____________
                    |_A_|_B_|_C_|
                    |_D_|_E_|_F_|
                    |_G_|_H_|_I_|
                    A, B, C, D, E, F, G, H, I 必须是1-9数字,且不能重复
                    所有的行,列,对角线的和都为15
        ''')
        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文件,按照第三列数字的顺序排列

附:
passwd文件内容

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
admin:x:1000:1000::/home/admin:/bin/bash
xiaobu:x:1001:1001::/home/xiaobu:/bin/bash
tcpdump:x:72:72::/:/sbin/nologin
tomcat:x:91:91:Apache Tomcat:/usr/share/tomcat:/sbin/nologin
git:x:1002:1002::/home/git:/bin/bash
hyxc:x:1003:1003::/home/hyxc:/sbin/nologin
saltapi:x:1004:1004::/home/saltapi:/sbin/nologin
geoclue:x:996:993:User for geoclue:/var/lib/geoclue:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
libstoragemgmt:x:995:992:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
saslauth:x:994:76:Saslauthd user:/run/saslauthd:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
colord:x:993:989:User for colord:/var/lib/colord:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
setroubleshoot:x:992:988::/var/lib/setroubleshoot:/sbin/nologin
chrony:x:991:987::/var/lib/chrony:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
sssd:x:990:986:User for sssd:/:/sbin/nologin
unbound:x:989:985:Unbound DNS resolver:/etc/unbound:/sbin/nologin
gnome-initial-setup:x:988:983::/run/gnome-initial-setup/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
hadoop:x:1005:1005::/home/hadoop:/bin/bash
memcached:x:987:982:Memcached daemon:/run/memcached:/sbin/nologin
hsqldb:x:96:96::/var/lib/hsqldb:/sbin/nologin

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()          
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值