Python之旅第一天
Python是什么?
python是运维晋升的一个趋势
python下载地址
https://www.python.org/downloads/
python解释器pycharm安装以及激活
http://idea.lanyus.com/ 获取验证码
#!/usr/bin/env python #_*_ coding:utf-8 _*_ # ** author: zhaobin # ** description: more function # ** createDate: 2018-8-13 # ** run python: python xxxx.py # *****************************
1.文件头
#!/usr/bin/env python #_*_ coding:utf-8 _*_
Linux下修改pip源方法如下: linux下,修改 ~/.pip/pip.conf (没有就创建一个), [global] timeout = 6000 index-url = http://pypi.douban.com/simple trusted-host = pypi.douban.com
2.python的文件可以是任意的后缀名
2.1、执行 Python 脚本的两种方式 直接调用python脚本,用python解释器去调用python脚本 2.2、简述位、字节的关系 一个字节是8位,计算机计算是以字节为单位,存储是以位单位 2.3、简述 ascii、unicode、utf-‐8、gbk 的关系 最先出现的是ascii编码,其次是unicode编码,又因为每个国家的标准不同,继而出现unicode的压缩编码utf-8。ascii码8位,unicode码16位。用ascii码表示的字符,再用unicode表示就会造成内存浪费,提出的utf-8编码,能用多少表示就用多少表示。 2.4、请写出 “李杰” 分别用 utf-‐8 和 gbk 编码所占的位数 Utf-8 中文一个字代表3个字节,占了6个字节 Gbk是一个代表2个字节,占了4个字节
3.单行注释: # 注释内容
多行注释:"""注释内容"""
4变量的声明与引用
#!/usr/bin/env python 会查找python的位置 name='buer' #变量的声明 name #通过变量名,引用变量的值 print(name) #引用并且打印变量的名name对应的值,即'buer'
1 #所有脚本第一句话都要写解释以下脚本是用什么解释器 2 #!/usr/bin/python python 3 #语言设置为:简体中文 4 #_*_coding:utf-8_*_ 5 6 7 #变量定义的规则: 8 9 #变量名只能是 字母、数字或下划线的任意组合 10 #变量名的第一个字符不能是数字 11 #以下 关键字 不能声明为变量名 12 ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 13 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 14 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 15 'return', 'try', 'while', 'with', 'yield']
16 #变量要有意义
17 #变量不能太长
18 #不要用中文
19 #推荐使用驼峰或者下划线命名
20 #区分大小写
5.简单的账号密码
1 #input <输入> 2 #print<打印> 3 username = input('用户名') 4 password = input('密码') 5 print(username,password) 6 ######################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 7 #输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即: 8 9 10 import getpass 11 12 username = input('usernmae:') 13 password = getpass.getpass('password:') 14 15 print(username,password) 16 17 18 19 ######################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 20 21 # .format <格式> 22 # import <调用> getpass<py系统自带函数模块,密文输入> 23 # print <打印> 24 # if <条件成立执行> 25 # and <而且> 26 # else <if条件不成立时执行> 27 28 import getpass 29 30 name = 'alex' 31 word = 'as123' 32 33 username = input('名字:') 34 password = input('密码:') 35 36 if name == username and word == password: 37 print('欢迎 {N} 登录'.format(N=name)) 38 else: 39 print('账号或者密码错误')
6.for循环
1 # i <变量名> 2 # range(10) <范围> (0,1,2,3,4,5,6,7,8,9)<0-9十个数> 3 4 for i in range(10): 5 print('loop',i) 6 7 8 # (0,10,3) <起始数,结束值,步长> <步长默认加1> 9 for i in range(0,10,3): 10 print('loop',i) 11 12 13 ######################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 14 15 # continue <跳出本次循环,重新循环> 16 17 for h in range(0,10): 18 if h <3: 19 print('loop',h) 20 else: 21 print('kkkkkk...') 22 continue 23 print('yyyyyy...') 24 print('呵呵呵...') 25 26 ######################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 27 28 # for t in range(9) <条件循环> <变量名> <在> <范围(参数)> 29 # print <打印> 30 # if <条件判断> 31 # break <中止程序> 32 33 for t in range(9): 34 print('______',t) 35 for j in range(11,50): 36 print(j) 37 if j >= 22: 38 break
7.python的数据类型
1 1、数字 2 int(整型) 3 -9223372036854775808~9223372036854775807 4 5 float(浮点型) 6 3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4 7 complex(复数) 8 (-5+4j)和(2.3-4.6j)是复数的例子,其中-5,4为实数,j为虚数 9 10 2、布尔值 11 真或假 12 1 或 0 13 14 3、字符串 15 "hello world"
8.显示数据类型
2 #显式转换的多种类型 3 # 4 #int (x [,base]) ⇒ 将x转换为一个十进制的整数 5 #long(x [,base]) ⇒ 将x转换为一个十进制的长整数 6 #float(x) ⇒ 将x转换为一个浮点数 7 #str(object) ⇒ 转换为字符串 8 #repr(object) ⇒ 转换为表达式字符串 9 #eval(str) ⇒ 用来计算在字符串中的有效Python表达式,并返回一个对象 10 #tuple(seq) ⇒ 将序列seq转换为一个元组 11 #list(seq) ⇒ 将序列seq转换为一个列表 12 #chr(x ) ⇒ 将一个整数转换为一个字符 13 #unichr(x ) ⇒ 将一个整数转换为Unicode字符 14 #ord(x ) ⇒ 将一个字符转换为它的整数值 15 #hex(x ) ⇒ 将一个整数转换为一个十六进制字符串 16 #oct(x ) ⇒ 将一个整数转换为一个八进制字符串
9.数据运算
#############################################################################>>> #——————————数据运算—————— # #——算数运算:—— # # 运算符 描述 实例 # # + 加-两个对象相加________________________________________________________________a+b 输出结果 30 15+15=30 # - 减-得到负数或者一个数减去另一个数______________________________________________a-b 输出结果-10 20-30=-10 # * 乘-两个数相乘或者返回一个被重复若干次的字符串__________________________________a*b 输出结果200 20*10=200 # / 除-X除以Y______________________________________________________________________b/a 输出结果2 4/2=2 # % 取模-返回除法的余数____________________________________________________________b%a 输出结果0 # ** 幂-返回X的Y次幂________________________________________________________________a**b 为10的20次方,输出结果100000000000000000000 # // 取整除-返回商的整数部分________________________________________________________9//2 输出结果 4 9.0//2.0 输出结果4.0 # ##############################################################################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # #——比较运算:—— false<假0> true<真1> # # 运算符 描述 实例 # # == 等于-比较对象是否相等__________________________________________________________(a==b)返回False # != 不等于-比较两个对象是否不相等__________________________________________________(a!=b)返回true # <> 不等于-比较两个对象是否不相等__________________________________________________(a<>b)返回true 这个运算符类似 != # > 大于-返回X是否大于Y____________________________________________________________(a>b)返回False # < 小于-返回X是否小于y。所有比较运算符返回1表示真,返回0表示假____________________(a<b)返回true # 这分别与特殊的变量True和False等价.注意,这些变量名的大写。 # >= 大于等于-返回x是否大于等于y____________________________________________________(a>=b)返回False # <= 小于等于-返回x是否小于等于y____________________________________________________(a>=b)返回true # ##############################################################################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # #——赋值运算:—— # # 运算符 描述 实例 # # = 简单的赋值运算符_______________________________________________________________c = a + b 将 a + b 的运算结果赋值给 c # += 加法赋值运算符_________________________________________________________________c += a 等效于 c = c + a # -= 减法赋值运算符_________________________________________________________________c -= a 等效于 c = c - a # *= 乘法赋值运算符_________________________________________________________________c *= a 等效于 c = c * a # /= 除法赋值运算符_________________________________________________________________c /= a 等效于 c = c / a # %= 取模赋值运算符_________________________________________________________________c %= a 等效于 c = c % a # **= 幂赋值运算符___________________________________________________________________c **= a 等效于 c = c ** a # //= 取整赋值运算符_________________________________________________________________c //= a 等效于 c = c // a _ # ##############################################################################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # #——逻辑值运算:—— # # 运算符 描述 实例 # # and 布尔“与”-如果X为False, X and Y ,返回False,否则它返回Y的计算值_____________(K and J)返回true # or 布尔“或”-如果X为True, 它返回True,否则它返回Y的计算值_________________________(K or J)返回true # not 布尔“非”-如果X为True,返回False,如果X为False,它返回True______________________not(K and J)返回true # ##############################################################################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # #——成员运算:—— # # 运算符 描述 实例 # # in 如果在指定的序列中找到值返回True,否则返回False,________________________________x在y序列中,如果x在y序列中返回True # not in 如果在指定的序列中没有找到值返回True,否则返回False,____________________________x不在y序列中,如果x在y序列中返回True # ##############################################################################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # #——身份运算:—— # # 运算符 描述 实例 # # is is是判断两个标识符是不是引用自一个对象__________________________________________x is y ,如果 id(x) 等于 id(y) ,is 返回结果1 # is not is not是判断两个标识符是不是引用自不同对象______________________________________x is not y ,如果 id(x) 不等于 id(y) ,is not 返回结果1 # ##############################################################################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # #——位运算:—— # # 运算符 描述 实例 # # & 按位与运算符_________________________________________________________________(a&b) 输出结果 12 ,二进制解释: 0000 1100 # | 按位或运算符_________________________________________________________________(a|b) 输出结果 61 ,二进制解释: 0011 1100 # ^ 按位异或运算符_______________________________________________________________(a^b) 输出结果 49 ,二进制解释: 0011 0001 # ~ 按位取反算符_________________________________________________________________(~a) 输出结果 -61 ,二进制解释: 1100 0011 ,在一个有符号二进制数的补码形式。 # << 左移动运算符_________________________________________________________________a<<2 输出结果 240 ,二进制解释: 1111 0000 # >> 右移动运算符_________________________________________________________________a>>2 输出结果 15 ,二进制解释: 0000 1111 # ###>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # 按位取反运算规则(按位取反再加1) #!/usr/bin/python a = 60 # 60 = 0011 1100 b = 13 # 13 = 0000 1101 c = 0 c = a & b; # 12 = 0000 1100 print "Line 1 - Value of c is ", c c = a | b; # 61 = 0011 1101 print "Line 2 - Value of c is ", c c = a ^ b; # 49 = 0011 0001 #相同为0,不同为1 print "Line 3 - Value of c is ", c c = ~a; # -61 = 1100 0011 print "Line 4 - Value of c is ", c c = a << 2; # 240 = 1111 0000 print "Line 5 - Value of c is ", c c = a >> 2; # 15 = 0000 1111 print "Line 6 - Value of c is ", c ##############################################################################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # #——运算符优先级:—— # # 运算符 描述 # # ** ___指数(最高优先级) # ~ + - ___按位翻转,一元加号和减耗(最后两个的方法名为+@和-@) # * / % // ___乘,除,取模和取整数 # + - ___加法减法 # >> << ___右移,左移运算符 # & ___位 'AND' # ^ | ___位运算符 # <= < > >= ___比较运算符 # < > == != ___等于运算符 # = %= /= //= -= += *= **= ___赋值运算符 # is is not ___身份运算符 # in not in ___成员运算符 # not or and ___逻辑运算符 # ######>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # * / + - <一元操作符> # %[百分比,取余数] **[幂运算操作符,比一元操作符左边高比一元操作符右边低] # //[地板除法] # #运算符优先级 # 幂运算 ** # 正负号 +* -* # 算术操作符 * / // + - # 比较操作符 < <= > >= == != # 逻辑运算符 not and or # #比较操作符 < <= > >= == != <根据表示的值进行比较> # #true <1,真> false <0,假> #逻辑符 and <左右都为true执行> or <左右 或者为true执行> not<相反执行> ###>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #三元操作符 语法: x if 条件 else y #x,y = 4, 5 #if x < y: # small=x #else: # small=y #改进为 #small = x if x < y else y # #assert<断言,关键字,AssertionError,程序检查点> #true <1,真> false <0,假> #while<而,循环体,为true时执行> # #for<为,循环体> in<在> # #for 目标 in 表达式 # 循环体 ##############################################################################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 三元运算 result = 值1 if 条件 else 值2 如果条件为真:result = 值1 如果条件为假:result = 值2 三、进制 二进制,01 八进制,01234567 十进制,0123456789 十六进制,0123456789ABCDEF 二进制到16进制转换http://jingyan.baidu.com/album/47a29f24292608c0142399cb.html?picindex=1 计算机内存地址和为什么用16进制? 为什么用16进制 1、计算机硬件是0101二进制的,16进制刚好是2的倍数,更容易表达一个命令或者数据。十六进制更简短,因为换算的时候一位16进制数可以顶4位2进制数,也就是一个字节(8位进制可以用两个16进制表示) 2、最早规定ASCII字符集采用的就是8bit(后期扩展了,但是基础单位还是8bit),8bit用2个16进制直接就能表达出来,不管阅读还是存储都比其他进制要方便 3、计算机中CPU运算也是遵照ASCII字符集,以16、32、64的这样的方式在发展,因此数据交换的时候16进制也显得更好 4、为了统一规范,CPU、内存、硬盘我们看到都是采用的16进制计算 16进制用在哪里 1、网络编程,数据交换的时候需要对字节进行解析都是一个byte一个byte的处理,1个byte可以用0xFF两个16进制来表达。通过网络抓包,可以看到数据是通过16进制传输的。 2、数据存储,存储到硬件中是0101的方式,存储到系统中的表达方式都是byte方式 3、一些常用值的定义,比如:我们经常用到的html中color表达,就是用的16进制方式,4个16进制位可以表达好几百万的颜色信息。
10. 简单的几个习题
10.1 使用while循环输入 1 2 3 4 5 6 8 9 10
#coding=utf-8 count = 1 while count < 11: if count == 7: pass else: print (count) count = count+1 print ('--end--')
10.2 求1-100的所有数的和
#coding=utf-8 a = 1 b = 0 while a < 101: b = b + a a = a+1 print (b)
10.3求1-100的所有偶数
#coding=utf-8 a = 1 while a < 101: temp = a %2 if temp ==0: pass print (a) else: pass a = a+1
10.4求1-2+3-4+5..99的所有和
#coding=utf-8 a = 1 b = 0 while a < 101: temp = a % 2 if temp == 0: b = b - a else: b = b + a a = a+1 print(b)
10.5 用户登录(3次重试机会)
import getpass s_name = "zhao" s_pass = "123456" count = 0 while count < 3: tar_name = input("输入你的账户") password = input("输入你的密码") if tar_name == s_name and password == s_pass: print "欢迎进入" break elif not tar_name and not password: print "账户名不能为空" count +=1 else: print "账户密码错误" count +=1
一、流程控制
1.条件语句
条件判断
计算机之所以能做很多自动化的任务,因为它可以自己做条件判断
1
2
3
|
a = 5 if a > 2 : print ( 'yes' ) |
根据Python的缩进规则,如果if
语句判断是True
,就把缩进的两行print语句执行了,否则,什么也不做。
也可以给if
添加一个else
语句,意思是,如果if
判断是False
,不要执行if
的内容,去把else
执行了:
a = 5
if a > 8:
print('yes')
else:
print('no')
a = 5
if a > 8:
print('yes')
elif a > 3:
print('no')
else:
print('bey')
elif
是else if
的缩写,完全可以有多个elif
,所以if
语句的完整形式就是:
if <条件判断1>: <执行1> elif <条件判断2>: <执行2> elif <条件判断3>: <执行3> else: <执行4>
if
语句执行有个特点,它是从上往下判断,如果在某个判断上是True
,把该判断对应的语句执行后,就忽略掉剩下的elif
和else
if
判断条件还可以简写,比如写:
1
2
|
if x: print ( 'True' ) |
只要x
是非零数值、非空字符串、非空list等,就判断为True
,否则为False
。
2.循环
Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来,看例子:
for i in range(0,5):
print(i)
else:
print('The for loop is over')
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
所以for x in ...
循环就是把每个元素代入变量x
,然后执行缩进块的语句。
再比如我们想计算1-100的整数之和,可以用一个sum
变量做累加:
sum = 0
for x in range(101):
sum+=x
print(sum)
习题:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。
for x in range(1,20):
for y in range(1,33):
z = 100-x-y
if (z % 3 == 0) and (x * 5 + y * 3 + z / 3 == 100):
s = "公鸡:%d;母鸡:%d;小鸡:%d;" %(x,y,z)
print(s)
第二种循环是while循环,只要条件满足,就不断循环,条件不满足时退出循环。比如我们要计算100以内所有奇数之和,可以用while循环实现:
sum = 0
n = 99
while n > 0:
sum += n
n = n - 2
print(sum)
break
在循环中,break
语句可以提前退出循环。例如,本来要循环打印1~100的数字:
n = 1
while n <= 100:
if n > 10: # 当n = 11时,条件满足,执行break语句
break # break语句会结束当前循环
print(n)
n += 1
print('END')
执行上面的代码可以看到,打印出1~10后,紧接着打印END
,程序结束。
可见break
的作用是提前结束循环。
continue
在循环过程中,也可以通过continue
语句,跳过当前的这次循环,直接开始下一次循环。
n = 0
while n < 10:
n += 1
if n % 2 == 0: # 如果n是偶数,执行continue语句
continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
print(n)
执行上面的代码可以看到,打印的不再是1~10,而是1,3,5,7,9。
可见continue
的作用是提前结束本轮循环,并直接开始下一轮循环。
小结:break用于退出本层循环;continue用于退出本次循环,继续下一次循环