1.ABCD乘于9 = DCBA,求ABCD的值,且ABCD均互不相等

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time :2017/12/26 16:11
# @Author :huangdongju
# @File :1.py
'''ABCD乘于9 = DCBA,求ABCD的值,且ABCD均互不相等''' class CountNumer(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 = {3}{2}{1}{0}".format(A,B,C,D))
print("A = {0}, B = {1},C = {2}, D={3}".format(A,B,C,D)) def main():
countNumber = CountNumer()
countNumber.numAbcd() if __name__ == '__main__':
main()

  结果:

2.九宫格,相加等于15

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time :2017/12/26 16:50
# @Author :huangdongju
# @File :2.py
'''九宫格,相加等于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()

结果:

_____________
                    |_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_|

3.对/etc/passwd文件进行排序

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time :2017/12/27 15:52
# @Author :huangdongju
# @File :3.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) 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()

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
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/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
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin

排序后的结果:

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
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

4.消息队列与线程的复习

  消息队列是为了防止消息丢失,或者是调用方不需要一直等待响应方的结果。程序代码如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time :2017/12/30 13:41
# @Author :huangdongju
# @File :demon1.py
#消息队列与多进程的结合
import codecs
import time
from threading import Thread
from queue import Queue # 创建一个生产者类,通过多线程的方式进行传送
class Produce(Thread): # 创建构造器,创建构造器之后的第一步为继承,继承Produce
def __init__(self,queue):
super(Produce,self).__init__()
self.fileName = "../online/passwd"
self.fileList = list()
self.queue = queue # 重写run方法,在run方法中打开文件
def run(self):
with codecs.open(self.fileName) as f :
self.fileList += f.readlines()
for line in self.fileList:
self.queue.put(line) # 创建消费者类
class Consumer(Thread):
def __init__(self,queue):
self.queue = queue
super(Consumer,self).__init__()
self.newPasswd = "newpasswd.txt"
self.fileList = list()
self.stat = 1 # 消息队列中10秒钟还没有新的数据,则断开连接。在等待的10的过程中,如果在第五秒的时候有数据
# 传输进来,则这10秒的计时应该又从0开始
def run(self):
while 1:
if self.queue.empty():
time.sleep(2)
self.stat += 1
if self.stat == 5:
break
else:
self.stat = 1
data = self.queue.get()
self.fileList.append(data) with codecs.open(self.newPasswd,'w') as f:
f.writelines(self.fileList) def main():
q = Queue()
produce = Produce(q)
consumer = Consumer(q)
produce.start()
consumer.start() if __name__ == '__main__':
main()

  执行结果为,在当前目录下生产一个新的文件newpasswd.txt

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
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/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
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin

python的阶段复习的更多相关文章

  1. centos lamp/lnmp阶段复习 以后搬迁discuz论坛不需要重新安装,只需修改配置文件即可 安装wordpress 安装phpmyadmin 定时备份mysql两种方法 第二十五节课

    centos  lamp/lnmp阶段复习 以后搬迁discuz论坛不需要重新安装,只需修改配置文件即可 安装wordpress  安装phpmyadmin  定时备份mysql两种方法  第二十五节 ...

  2. centos 阶段复习 2015-4-6 dd命令 hosts.allow和hosts.deny 啊铭的myssh脚本 清空history命令历史 /dev/zero 零发生器 /dev/null 黑洞 /dev/random 生成随机数 第十一节课

    centos 阶段复习 2015-4-6  dd命令 hosts.allow和hosts.deny 啊铭的myssh脚本 清空history命令历史  /dev/zero 零发生器  /dev/nul ...

  3. Python学习 —— 阶段综合练习三

    Python学习 —— 阶段综合练习三 综合之前文件与文件夹操作的学习,做以下实例练习:(建议先不要看代码,自己先试着写:代码仅供参考,有多种实现方法) 1. 目录文件遍历(二层目录结构) 1).  ...

  4. Java第三阶段复习

    Java第三阶段复习: 1. Spring 1. IOC: 定义:Inverse Of Controller:反转控制,将bean对象的创建和对象之间的关联关系的维护由原来我们自己创建.自己维护反转给 ...

  5. Python阶段复习 - part 4 - 用户登录程序

    简易版: #!/usr/bin/env python # _*_ coding:UTF-8 _*_ # __auth__:Dahlhin import sys userinfo = r'userinf ...

  6. Python阶段复习 - part 3 - Python函数

    利用函数打印9*9乘法表 def cheng(num): for i in range(1,num+1): for j in range(1,i+1): print('{0} * {1} = {2}' ...

  7. Python阶段复习 - part 2 - Python序列/持久化

    1. 把一个数字的list从小到大排序,然后写入文件,然后从文件中读取出来文件内容,然后反序,在追加到文件的下一行中 >>> import json >>> imp ...

  8. Python阶段复习 - part 1 - Python基础练习题

    1.实现1-100的所有的和 # 方法1: sum = 0 for i in range(1,101): sum += i print(sum) # 方法2: num1 = int(input('请输 ...

  9. python第一阶段总结(2)

    python3第一阶段的总结 首先申明一下,本人是看网络课程“老男孩”过来写博客的,想把自己学到的东西分享一下.同时给老男孩打个广告,其教学水平真的挺好的.仅据我个人多年的学习评价. 好,接下来是我对 ...

随机推荐

  1. Ubuntu16.04更换NVIDIA驱动导致无法进入图形界面的解决方案

    一.进入recovery模式 由于无法进入图形界面,所以需要在开机时进入恢复模式.我的机器上时在开机时通过引导选项中的recovery mode选项进入,进入之后可以看到许多选项卡,选择root,回车 ...

  2. hdu 6169 gems gems gems【DP】

    题目链接:hdu 6169 gems gems gems Now there are n gems, each of which has its own value. Alice and Bob pl ...

  3. Linux学习总结(十)-文件复制及查看, 环境变量

    一 文件复制及移动 1.命令 cp --------copy 的意思格式 cp 选项 源文件 目标文件a: 对于文件我们直接cp 文件 目标文件假定我们在普通用户家目录下/home/lv新建两个普通文 ...

  4. mysql学习之join用法

    转载  一张图看懂 SQL 的各种 join 用法 一.JOIN 使用介绍 下面例子使用的数据表如下: -- ---------------------------- -- Table structu ...

  5. maven下载依赖jar包失败处理方法--下载jar包到本地并安装到maven仓库中

    所有maven依赖jar包地址:https://repo1.maven.org/maven2/org/apache/ 1. 安装jar包失败报错: The following artifacts co ...

  6. 基于uIP和uC/OS-II嵌入式网络开发

    基于uIP和uC/OS-II嵌入式网络开发 ——uIP主动发送数据分析 摘要:uIP协议栈简单易用,可以为16位单片机或者是更低级的处理器使用,占用的资源很少,相关移植网上有详细介绍,本文主要讨论uI ...

  7. 一点一点看JDK源码(三)java.util.ArrayList 前偏

    一点一点看JDK源码(三)java.util.ArrayList liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 1.综述 ArrayLi ...

  8. Knowledge Point 20180308 拔下forEach的外衣

    剖析加强for 很长一段时间对于foreach都有一种误解,那就是foreach只是普通for的包装,底层还是普通for循环,直到深入了解迭代器的时候,才发现自己错了,本节就来探讨一下foreach, ...

  9. oracle 数据库密码生产同步模拟环境 ,随记常用命令

    1.查看当前open用户 select username,account_status,expiry_date,profile from dba_users; 2.查看目前的密码过期策略 select ...

  10. 键盘录入6个int类型的数据存入数组arr中,将arr数组中的内容反转...

    一.有一道很有意思的数组操作相关编程题,闲来无事用JS解决了一下,问题描述如下: (1) 键盘录入6个int类型的数据存入数组arr中: (2) 将arr数组中的内容反转: (3) 将反转后的数组角标 ...