Python_oldboy_自动化运维之路(一)
python简介:
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
python特点:
-
1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
-
2.易于阅读:Python代码定义的更清晰。
-
3.易于维护:Python的成功在于它的源代码是相当容易维护的。
-
4.一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
-
5.互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
-
6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
-
7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
-
8.数据库:Python提供所有主要的商业数据库的接口。
-
9.GUI编程:Python支持GUI可以创建和移植到许多系统调用。
-
10.可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力
编译型和解释型:
编译型语言:在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是C语言。
优缺点:速度快,不用翻译,底层应用,不跨平台,开发效率低,比如C,C++,Go,swift
解释型语言:是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢
优缺点:跨平台,快速部署,比如ruby,python,php,pel
python环境部署:
http://list.youku.com/albumlist/show?id=28961509&ascending=1&page=1
字符编码介绍:
http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html
引用一个小故事:古代打仗通讯有三种方法,千里马,飞鸽传书,烽火台,就拿烽火台的通讯方法举例子,假如敌人来了,需要在烽火台点狼烟让友军知道有敌人来袭,但是怎么能利用最少的狼烟来精确的表示共有多少个敌人来袭,让友军知道好派相应的人数来支援。
备注:0表示不点,1表示点狼烟
由上表可以看出,可以用8根狼烟就能准确的代表1~256个人,以此类推。
9根可以表示2的9次方个敌人约为512人
10根可以表示2的10次方个敌人约为1024个
15根可以表示2的15次方个敌人约为32768个人
16根就可以表示六万多人~~~~
ASCII字符代码表:
、
十进制:128 64 32 16 8 4 2 1
二进制:1 1 1 1 1 1 1 1 1
换算说明:8位等于1字节,1字节就可以存1个accii码。
举例说明:
十进制48表示的符号是数字0,二进制的表示就是:00110000
十进制55表示的符号是数字7,二进制的表示就是:00110111
那么007在计算机语言的表示就是001100000011000000110111
python基础语法:
Window上在安装Python时已经已经安装了默认的交互式编程客户端,快捷键,idle,提示窗口如下:
练习:
【字符串】
>>> name = "lijun"
>>> name
'lijun'
>>> name[0]
'l'
>>> name[0:3]
'lij'
>>> name[0:4] //顾头不顾尾
'liju'
>>> name
'lijun'
>>> age
23
>>> msg="my name is %s and i am %s years old" //空出变量名:%s
>>> msg
'my name is %s and i am %s years old'
>>> msg="my name is %s and i am %s years old" % (name,age)
>>> msg
'my name is lijun and i am 23 years old'
【列表】
>>> names = []
>>> names
[]
>>> names = ["chenlijun","liyongsan","panglicai"] //设置列表
>>> names
['chenlijun', 'liyongsan', 'panglicai']
>>> names[1] //显示列表第二个名
'liyongsan'
>>> names[1]="fanyafeng" //修改列表第二个名字
>>> names
['chenlijun', 'fanyafeng', 'panglicai']
>>> names.append("yongsan") //列表增加一个
>>> names
['chenlijun', 'fanyafeng', 'panglicai', 'yongsan']
>>> names.insert(1,"lijun") //在列表第二个前插入lijun
>>> names
['chenlijun', 'lijun', 'fanyafeng', 'panglicai', 'yongsan']
>>> del names[1] //删除列表第二个名字
>>> names
['chenlijun', 'fanyafeng', 'panglicai', 'yongsan']
>>> names.remove("panglicai") //删除指定的名字
>>> names
['chenlijun', 'fanyafeng', 'yongsan']
>>> names.index("yongsan") //查找列表yongsan的序列号
2
>>> names[2]="liyongsan" //根据序列修改名字
>>> names
['chenlijun', 'fanyafeng', 'liyongsan']
>>> names[names.index("chenlijun")]="lijun" //修改名字,套用变量
>>> names
['lijun', 'fanyafeng', 'liyongsan']
>>> names.append("lijun")
>>> names
['lijun', 'fanyafeng', 'liyongsan', 'lijun']
>>> names.count("lijun") //计数重复的名字
2
>>> names.sort() //排序
>>> names
['fanyafeng', 'lijun', 'lijun', 'liyongsan']
>>> names
['liyongsan', 'lijun', 'lijun', 'fanyafeng', '4', '!']
>>> names[:5]
['liyongsan', 'lijun', 'lijun', 'fanyafeng', '4']
>>> names[:3]
['liyongsan', 'lijun', 'lijun']
>>> names[:-1]
['liyongsan', 'lijun', 'lijun', 'fanyafeng', '4']
>>> names[0:-1]
['liyongsan', 'lijun', 'lijun', 'fanyafeng', '4']
>>> names
['liyongsan', 'lijun', 'lijun', 'fanyafeng', '4', '!']
>>> names[0:-1:1]
['liyongsan', 'lijun', 'lijun', 'fanyafeng', '4']
>>> names[0:-1:2]
['liyongsan', 'lijun', '4']
>>> names
['liyongsan', 'lijun', 'lijun', 'fanyafeng', '4', '!']
【打印输入的内容】
name = input("name:")
age = input("age:")
job = input("job:")
info = '''-----personal info-------
NAME:%s
AGE:%s
JOB:%s
''' %(name,age,job)
print(info)
1 name = input("youername:") 2 age = input("youerage:") 3 job = input("youerjob:") 4 5 info = ''' ---personal info---------- 6 NAME:%s 7 AGE:%s 8 JOB:%s 9 '''%(name,age,job) 10 print (info)
循环:
【for循环】
1 for i in range(5):
2 print ("look", i)
1. 输入密码场景,判断用户名和密码都输入成功,则显示登陆成功,用户名是xiaoyu则不让登陆
1 user = "chenlijun"
2 passwd = "lijun"
3 newuser = input("name:")
4 newpasswd = input("passwd:")
5 if user == newuser and passwd == newpasswd:
6 print ("登陆成功!")
7 elif newuser == "xiaoyu":
8 print ("%s已经被拉进黑名单,直到海枯石烂都不让登陆!" %(newuser))
9 else:
10 print ("登陆失败!")
2. 最多让输入三次,输入两次成功则显示成功
1 user = "chenlijun"
2 passwd = "lijun"
3
4 for i in range(3):
5 newuser = input("name:")
6 newpasswd = input("passwd:")
7 if user == newuser and passwd == newpasswd:
8 print ("登陆成功!")
9 break
10 elif newuser == "xiaoyu":
11 print ("%s已经被拉进黑名单,直到海枯石烂都不让登陆!" %(newuser))
12 break
13 else:
14 print ("登陆失败!")
3. 输入三次都没有登陆成功,则显示被锁定
1 user = "chenlijun"
2 passwd = "lijun"
3
4 for i in range(3):
5 newuser = input("name:")
6 newpasswd = input("passwd:")
7 if user == newuser and passwd == newpasswd:
8 print ("登陆成功!")
9 break
10 elif newuser == "xiaoyu":
11 print ("%s已经被拉进黑名单,直到海枯石烂都不让登陆!" %(newuser))
12 break
13 else:
14 print ("登陆失败!")
15 else:
16 print ("你已经被CIA,CHIA锁定,直到海枯石烂也不能登陆!")
【while循环】
备注:前面必须是. 表示空格,否则报错。
1. 要求程序每10s运行一次
1 import time #导入time模块
2 count = 0 #设置议题计数器
3 while True: #假如条件为真,就执行以下代码
4 count += 1 #每次循环+1
5 print ("loop", count)
6 time.sleep(10) #间隔10s,永远会执行下去。
2. 当程序到某个条件时,将不在执行下去。
1 count = 0
2 run = True
3 while run:
4 count += 1
5 print ("loop", count)
6 if count == 4:
7 run = False
8 time.sleep(10)
3.continue的用法,跳过循环。
1 for i in range(10):
2 if i%2 == 0:
3 continue
4 print ("这个是奇数", i)