socket

例题1:四位数abcd*8=dcba

        思路:为每个数做一次循环根据条件判断取值,由于是四位数所以a不能为0同理d不能为零搞清楚限制范围。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# @TIME : 2017/12/28 15:10
# @File : demo1.py
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()

        结果

1
2
3
4
5
6
E:\untitled\venv\Scripts\python.exe E:/untitled/Test/demo1.py
ABCD * 9 = DCBA; A!=B!=C!=D
1089 *9 = 9801
A = 1, B = 0, C = 8, D = 9
Process finished with exit code 0

例题2:九宫格 了解九宫格意义1-9每个数字放在九宫格中,要求一横行一竖行一斜巷三个数相加必须为15

        思路:第一个格子中数字范围为1-9取出值后将剩余数字入列为1-9-a,然后第二个格子的数子范围为1-9-a(a为第一格数字),第三格数字范围为1-9-a-b,以此类推,最后进行横,竖,左右斜三者判断:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
`#! /usr/bin/env python
# -*- coding: utf-8 -*-
# @TIME : 2017/12/28 16:32
# @File : demo2.py
'''九宫格'''
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()

        结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
E:\untitled\venv\Scripts\python.exe E:/untitled/Test/demo2.py
_____________
|_A_|_B_|_C_|
|_D_|_E_|_F_|
|_G_|_H_|_I_|
A, B, C, D, E, F, G, H, I 必须是1-9数字,且不能重复
所有的行,列,对角线的和都为15
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
_____________
|_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_|
Process finished with exit code 0

例题3 关于文件操作将linux中passwd文件重新排序按照第三列大小进行排序:

        此例题为了熟悉文件操作做命令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#! /usr/bin/env python
# -*- coding : Utf-8 -*-
# @TIME : 2017/12/26 16:08
# @File : demo3.py
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)
print(self.contextList)
def writeContextList(self):
with codecs.open("new_passwd", "w") as fw:
fw.writelines(self.contextList)
def main():
sortNumber=SortPasswd()
sortNumber.getContextList()
sortNumber.writeContextList()
if __name__ == '__main__':
main()

        结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tomcat:x:91:91:Apache Tomcat:/usr/share/tomcat:/sbin/nologin
hsqldb:x:96:96::/var/lib/hsqldb:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
memcached:x:987:982:Memcached daemon:/run/memcached:/sbin/nologin
gnome-initial-setup:x:988:983::/run/gnome-initial-setup/:/sbin/nologin
unbound:x:989:985:Unbound DNS resolver:/etc/unbound:/sbin/nologin
sssd:x:990:986:User for sssd:/:/sbin/nologin
chrony:x:991:987::/var/lib/chrony:/sbin/nologin
setroubleshoot:x:992:988::/var/lib/setroubleshoot:/sbin/nologin
colord:x:993:989:User for colord:/var/lib/colord:/sbin/nologin
saslauth:x:994:76:Saslauthd user:/run/saslauthd:/sbin/nologin
libstoragemgmt:x:995:992:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
geoclue:x:996:993:User for geoclue:/var/lib/geoclue:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
admin:x:1000:1000::/home/admin:/bin/bash
xiaobu:x:1001:1001::/home/xiaobu:/bin/bash
git:x:1002:1002::/home/git:/bin/bash
hyxc:x:1003:1003::/home/hyxc:/sbin/nologin
saltapi:x:1004:1004::/home/saltapi:/sbin/nologin
hadoop:x:1005:1005::/home/hadoop:/bin/bash
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin