python自动化开发 day01

Author:@南非波波

作者注:

  python学习旅程正式开启,这一天将是一个新的开始。希望我们在python开发的道路上多多积累、多分享!

一、python简介

python应用 
    Disgus Voitze Yelip Mozilla Quora  Redit
    豆瓣、知乎、sohu、腾讯、网易、金山、雅虎、Facebook、 Instagram(图片分享)
python2与python3比较
    经过多年的发展,python3已经得到更多的第三方优秀函数库兼容,对比python2来说,python3表现出来的精简高效特性让开发者们跃跃欲试。
    另外,python2.7.11作为python2版本的最后一个版本,不再有新版本推出,这样官方更多的引导开发者快速的向python3版本上进行转移。
    在本次学习的过程中,我们会穿插在python2和python3两个版本之间进行学习,后续的测试代码在开头会明确标记python的使用版本。相关注释都会对python2和python3的差异进行描述。

二、python安装

1.windows端安装
    安装包下载地址:
        python2.7版本:
            https://www.python.org/ftp/python/2.7.11/python-2.7.11.amd64.msi
        python3.5版本:
            https://www.python.org/ftp/python/3.5.1/python-3.5.1-amd64.exe  #安装版
            https://www.python.org/ftp/python/3.5.1/python-3.5.1-embed-win32.zip #免安装版
    安装步骤:
        使用可执行程序进行安装,按照流程进行安装即可,注意在安装的时候选择“安装路径”和一些必要的插件,比如pip、easy_install等
        使用免安装的文件(可嵌入的)进行环境配置:
        ![](http://i.imgur.com/U827QAb.jpg)
2.linux端安装
    centos6等常用系统自带的python版本为2.6,有特殊需求的朋友可能需要升级到python2.7或者python3版本。下面链接以python2.7.8为例进行编译安装。
        http://swht1278.blog.51cto.com/7138082/1728427
    提供一下python版本的下载地址:
        python2.7.11版本:
            https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz
        python3.5版本:
            https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
3.Ubuntu端安装
    最新版本的Ubuntu系统(15.04等)已经自带了python2.7.9和python3.4.5两个版本的python环境,我们只需要在shell终端输入python2或python3进行调用即可。老版本的系统升级python环境需要以下操作:
        # 增加python源
        sudo add-apt-repository ppa:fkrull/deadsnakes
        # update 软件列表
        sudo apt-get update
        # 安装python3
        sudo apt-get install python3.5

三、基础概念

变量:Python 是动态类型语言, 也就是说不需要预先声明变量的类型。变量是对象的引用,变量只是将指针指向了对象所在的内存地址。变量的类型和值在赋值那一刻被初始化。
变量起名:
    1.显式-->通俗易懂
    2.nums_of_alex_gf = 19 
    3.NumsOfAlexGf = 20  驼峰写法
    4.中横线不能作为变量的命名字符
    5.数字不能作为开头,但可以在中间或者结尾
    6.特殊字符不能作为变量名的组成部分
    7.不能使用空格
    8.关键字不能声明为变量

四、运算符

算术运算符
    +  -  *  /   //  %  **
    /:传统除法,将执行地板除法,
    //:浮点除法,即去尾法除法,保留位数与除数和被除数的小数位数有关 (取整除,返回商的部分)
    **:平方运算
比较运算符
    <  <=  >  >=  ==  !=   <>
    不等于:!=   <>
    返回值是:True 和 False
赋值运算符
    >>> counter = 0 
    >>> miles = 1000.0 
    >>> name = 'Bob' 
    >>> counter = counter + 1 
    >>> kilometers = 1.609 * miles 
    >>> print '%f miles is the same as %f km' % (miles, kilometers)
    1000.000000 miles is the same as 1609.000000 km
    支持简写:n=n*3 -> n*=3  但不支持自增自减,因为“-” 和”+”是单目字符,--n -> -(-n)n
位运算符
    &      按位与      (a&b)
    |      按位或    (a|b)
    ^    按位异或    (a^b)
    ~    按位取反    (~a)
    <<    左移动     a<<1 整体向左移动,结果是原来数值的2倍
    >>  右移动    a>>1 整体向右移动,结果是原来数值的1/2
逻辑运算符
    and 布尔“与”     同真为True
    or  布尔“或”     同假为False
    not    布尔“非”     非True即False
成员运算符
    in     如果在指定序列中找到指定的值,返回True
    not in 如果在指定序列中没找到指定的值,返回False
身份运算符
    is  判断两个标识符是不是引用自同一个对象
        type(names) is list 判断某个变量值的类型(list、int、dic)
    is not 判断两个标识符是不是引用自不同对象

五、字符编码

python2 中在输入中文字符的时候会报字符编码的错误,在python3中已经引入了Unicode(万国码、统一码、),它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定所有的字符和符号最少由16位二进制来表示(2个字节),即2 ** 16 = 65536
UTF-8,是对Unicode编码的压缩和优化,它不再使用最少2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存,欧洲的字符用2个字节保存,东亚的字符用3个字节保存

示例
python2
    #!/usr/local/env python2
    # -*- coding: utf-8 -*-  # 声明使用的字符类型,否则会报错
    '''
    @swht
    '''
    print "你好!"

python3
    #!/usr/local/env python3
    '''
    @swht
    '''
    print ("你好!")

总结:在python3中完全不用考虑字符编码的问题,python解释器会自行处理字符类型的问题

六、python流程控制

流程控制分为两大类:条件判断和循环
其中循环又分为两类:for循环和while循环
条件判断和循环可以单独存在,也可以嵌套使用,以处理更为复杂的逻辑问题。

下面会从if条件判断for循环while循环进行代码示例:

if_ex.py

#!/usr/bin/env python3
'''
@swht
'''
LuckyNum = 9
# 让用户输入一个数值与指定的值进行比较,当然这里没有处理用户输入为空的情况
# strip() 可以截取用户输入字符串首尾的空格
UserInputNum = int(input("请从1-100之间选择一个数字输入:").strip())
if UserInputNum > LuckyNum:
    print("你输入的数字比我的LuckNum要大哦!")
elif UserInputNum < LuckyNum:
    print("你输入的数字比我的LuckNum要小哦!")
else:
    print("恭喜你猜中了我的LuckNum,原来你就是我的幸运天使!")

while_ex.py

#!/usr/bin/env python3
'''
@swht
'''
LuckyNum = 9
# 设置一个标志位,用于程序判断退出循环,
flag = True
while flage:
UserInputNum = int(input("请从1-100之间选择一个数字输入:").strip())
if UserInputNum > LuckyNum:
    print("你输入的数字比我的LuckyNum要大哦!")
elif UserInputNum < LuckyNum:
    print("你输入的数字比我的LuckyNum要小哦!")
else:
    print("恭喜你猜中了我的LuckyNum,原来你就是我的幸运天使!")
    flag = False 

for_ex.py

#!/usr/bin/env python3
'''
@swht
'''
LuckyNum = 9
for count in range(3):
    UserInputNum = int(input("请从1-100之间选择一个数字输入:").strip())
    if UserInputNum > LuckyNum:
        print("你输入的数字比我的LuckyNum要大哦!")
    elif UserInputNum < LuckyNum:
        print("你输入的数字比我的LuckyNum要小哦!")
    else:
        print("恭喜你猜中了我的LuckyNum,原来你就是我的幸运天使!")
        break
else:
    print("你输入的次数已达到3次,程序即将退出!")

对比break和countnue

break是结束整个循环体,continue是结束单次循环

示例
    #!/usr/local/env python3
    '''
    @swht
    '''
    x = 0
    while x < 10:
        if x ==3:
            break
        x += 1
        print("x=%s" % x)
    输出结果:    x=1
                x=2
                x=3
    直接退出了整个while循环

七、格式化输出

使用'''string'''可以很方便的将多行内容进行注释,另外这个符号还有一个功能,那就是文档描述的功能。一般而言,在程序的前面后有一个文档说明,包括作者信息,版本信息,功能等

#!/usr/bin/env python
'''
@swht
'''

name = input("name:")
age = input("age:")
job = input("job:")

print("Information of:" + name + "\nname:" + name + "\nage:" + age + "\njob:" + job)
print("Information of %s\nname:%s\nage:%s\njob:%s" %(name,name,age,job))
print('''
    Infomation of %s
             name:%s
              age:%s
              job:%s
    ''' % (name,name,age,job))

八、数据类型:

列表转换成元组:tuple(name_list)

元组转换成列表:list(元组_name)

1.数字
    int     整型
    long     长整型
    float     浮点型
2.布尔
    1    真
    0    假
3.字符串
        stinglist = “Hello World”
    字符串操作:
        (参考:http://www.cnblogs.com/zhxiang/p/3385242.html
        http://www.jb51.net/article/47956.htm)
        移除空白:stinglist.strip()
        移除特殊字符:stinglist.lstrip().rstrip(',')
        分割:>>> stringlist[2]
                 'l'
        长度:>>> len(stringlist)
                 11
        索引:>>> stringlist.index('W') #字母‘W’所在的索引值
                 6
        切片:>>> stringlist[0:3] #顾前不顾尾
                 'Hel'
        字符串在输出时的对齐:
            >>> stringlist[0:3]
            'Hel'
            >>> stringlist[0:3].ljust(5) #ljust(width,[fillchar]) fillchar为填充字符,默认为空格
            'Hel  '
        字符串拼接:
            >>> stringlist += s
            >>> stringlist
            'Hello Worldab,cde,fgh,ijk'
        大小写转换:
            >>>stringlist.lower() #小写
               'hello world'
            >>> stringlist.upper() #大写
                'HELLO WORLD'
            >>> stringlist.swapcase() #大小写互换
                'hELLO wORLD'
            >>> stringlist.capitalize() #首字母大写
                'Hello world' 
            >>> string.capwords(stringlist) #以空格分割,每个单词首字母大写
                'Hello World'
        字符串翻转:
            >>> s
            'sdsds sdsdsff'
            >>> s = s[::-1]
            >>> s
            'ffsdsds sdsds'
        字符串查找:
            >>> stringlist.find('World')
                6
        判断是否为整型:
            >>> stringlist.isdigit()
                False
        判断字符串是否为空格:
            >>> stringlist.isspace()
                False
        转换成列表:
            >>> stringlist.split() #默认以空格为分割
                ['Hello', 'World']

4.列表(dir(name_list)获取列表操作帮助)
    参考:http://www.jb51.net/article/46768.htm
    name_list = ['alex', 'sddkd', 'shdjsjd', 'shen', 'swht', 'test']
    移除空白:name_list.strip()
    获取元素:name_list[index_num]
    索引:name_list.index("swht")  获取指定元素的索引值
    追加:name_list.append("test") 在列表后面追加一个元素
    插入:name_list.insert(3,"ssdd") 在索引值3后面插入新的元素
    删除:name_list.pop() 删除最后一个元素
         name_list.remove("test") 删除指定的元素
    排序:name_list.sort()  对元素按照ASCII码进行排序
        python3 里面不能同时sort int 和 str类型
    反转顺序:name_list.reverse()  对列表中的元素进行反转操作
    切片:name_list[0:3]  切取索引值从0-2的值(切片顾头不顾尾)
    扩展:name_list.extend(name_list2) 在一个列表后面追加另一个列表的元素,或者追加一个变量中的单个字符
5.元组
    >>> namelist = ("swht","test")
    >>> type(namelist)
        <class 'tuple'>
    索引:>>> namelist.index('swht') #查找某个字符串的索引值
             0
    统计:>>> namelist.count('swht') #统计某个字符串出现的次数
             1
6.字典(无序)
    参考:http://www.jb51.net/article/47990.htm

    不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
    键必须不可变,所以可以用数,字符串或元组充当,所以用列表就不行

    dict = {"swht":"test123","shen":"test124","test":"test125"}
    访问字典里的值:
        >>> dict["swht"]
            'test123'
    增加字典里的值:
        >>> dict["alex"] = "test126"
        >>> dict
        {'test': 'test125', 'shen': 'test124', 'swht': 'test123', 'alex': 'test126'}

    删除字典当中的元素:
        >>> del dict["test"]
        >>> dict
        {'shen': 'test124', 'swht': 'test123', 'alex': 'test126'}
        >>>                
    清空字典里的所有条目:
        >>> dict.clear()
        >>> dict
        {}
    删除字典:del dict

九、文件操作

简单操作:
    filename = open("文件路径","模式")    #打开文件
    filename.write('内容')    #往文件中写入内容
    filename.read()        #一次性加载文件中的内容到内存
    filename.readlines()    #一次性加载所有的内容到内存,并根据行分割成字符串
    filename.close()    #关闭文件句柄

十、作业

作业一:编写登录接口

作业二:多级菜单    
文章目录
  1. 一、python简介
  2. 二、python安装
  3. 三、基础概念
  4. 四、运算符
  5. 五、字符编码
  6. 六、python流程控制
    1. if_ex.py
  7. while_ex.py
  8. for_ex.py
  9. 对比break和countnue
  • 七、格式化输出
  • 八、数据类型:
  • 九、文件操作
  • 十、作业