111111

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 ) ⇒ 将一个整数转换为一个八进制字符串
View Code

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进制位可以表达好几百万的颜色信息。
View Code

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')
复制代码

elifelse if的缩写,完全可以有多个elif,所以if语句的完整形式就是:

if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>

if语句执行有个特点,它是从上往下判断,如果在某个判断上是True,把该判断对应的语句执行后,就忽略掉剩下的elifelse

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用于退出本次循环,继续下一次循环

posted @ 2018-04-08 17:54  赵SIR  阅读(228)  评论(0编辑  收藏  举报