zoukankan      html  css  js  c++  java
  • Python基础学习——概述、基本数据类型、流程控制

    一、Python基础学习

      一、编程语言分类

       1、简介

    • 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件
    • 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作硬件
    • 高级语言:站在人的角度,说人话;即用人类的字符去编写程序,屏蔽了硬件操作

      2、优缺点

    语言      优点                              缺点
    机器语言  最底层,执行速度快                最复杂,开发效率最低
    汇编语言  比较底层,执行速度较快             复杂,开发效率低
    高级语言  编译型:
               执行速度快,不依赖语言环境运行    跨平台差
             解释型:
               跨平台好,一份代码,导出可用      执行速度慢,依赖解释器才行
    高级语言又分为:编译型和解释型
        编译型:执行速度快,调试麻烦
        解释型:执行速度慢,调试方便

      3、比较三种语言

      学习难度从高到低
      执行效率从高到低
      开发效率从低到高

      4、语言排行

      最新排行见链接:https://www.tiobe.com/tiobe-index/

      下面是18年与17年的排行对比表

      

      二、Python介绍

      1、目前Python主要应用领域

    1. WEB开发——最火的Python web框架Django, 支持异步高并发的Tornado框架,短小精悍的flask,bottle, Django官方的标语把Django定义为the framework for perfectionist with deadlines(大意是一个为完全主义者开发的高效率web框架)
    2. 网络编程——支持高并发的Twisted网络框架, py3引入的asyncio使异步编程变的非常简单
    3. 爬虫——爬虫领域,Python几乎是霸主地位,ScrapyRequestBeautifuSoapurllib等,想爬啥就爬啥
    4. 云计算——目前最火最知名的云计算框架就是OpenStack,Python现在的火,很大一部分就是因为云计算
    5. 人工智能——谁会成为AI 和大数据时代的第一开发语言?这本已是一个不需要争论的问题。如果说三年前,Matlab、Scala、R、Java 和 Python还各有机会,局面尚且不清楚,那么三年之后,趋势已经非常明确了,特别是前两天 Facebook 开源了 PyTorch 之后,Python 作为 AI 时代头牌语言的位置基本确立,未来的悬念仅仅是谁能坐稳第二把交椅。
    6. 自动化运维——问问中国的每个运维人员,运维人员必须会的语言是什么?10个人相信会给你一个相同的答案,它的名字叫Python
    7. 金融分析——我个人之前在金融行业,10年的时候,我们公司写的好多分析程序、高频交易软件就是用的Python,到目前,Python是金融分析、量化交易领域里用的最多的语言
    8. 科学运算—— 你知道么,97年开始,NASA就在大量使用Python在进行各种复杂的科学运算,随着NumPy, SciPy, Matplotlib, Enthought librarys等众多程序库的开发,使的Python越来越适合于做科学计算、绘制高质量的2D和3D图像。和科学计算领域最流行的商业软件Matlab相比,Python是一门通用的程序设计语言,比Matlab所采用的脚本语言的应用范围更广泛
    9. 游戏开发——在网络游戏开发中Python也有很多应用。相比Lua or C++,Python 比 Lua 有更高阶的抽象能力,可以用更少的代码描述游戏业务逻辑,与 Lua 相比,Python 更适合作为一种 Host 语言,即程序的入口点是在 Python 那一端会比较好,然后用 C/C++ 在非常必要的时候写一些扩展。Python 非常适合编写 1 万行以上的项目,而且能够很好地把网游项目的规模控制在 10 万行代码以内。另外据我所知,知名的游戏<文明> 就是用Python写的

      2、Python有哪些种类

    我们现在知道了Python是一门解释型语言,代码想运行,必须通过解释器执行,Python的解释器本身也可以看作是个程序(翻译官司是哪国人不重要),这个程序是什么语言开发的呢? 答案是好几种语言? what? 因为Python有好几种解释器,分别基于不同语言开发,每个解释器特点不同,但都能正常运行我们的Python代码,下面分别来看下:
    
    #CPython:CPython是使用最广且被的Python解释器。本教程以CPython为准。
    当我们从Python官方网站下载并安装好Python 2.7后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。
    
    #IPython
    IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。
    CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。
    
    #PyPy
    PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
    绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。
    
    #Jython
    Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
    
    #IronPython
    IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
    View Code

      3、Python的优缺点 

    序号

    优点

    缺点

    1

    简单易懂,易于学习

    运行速度慢,但是在大多数情况下已经完全满足了对程序速度的需求,除非写对速度要求极高的搜索引擎等

    2

    开发效率高

    代码不能加密——Python是解释型语言,所以它的源码是以明文形式存在的

    3

    高级语言——无需考虑底层细节

    线程不能利用多CPU问题

    4

    可移植性——Python几乎可以移植到任何操作系统上运行

    5

    可扩展性——若想的一段代码运行的更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。

    6

    可嵌入性——你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能

      三、Python解释器

      Python目前已支持所有主流操作系统,在Linux,Unix,Mac系统上自带Python环境,在Windows系统上需要安装一下,超简单

        打开官网 https://www.python.org/downloads/windows/ 下载中心

    目前市场已开发软件,大多数基于2.x版本,但2.x版本已经不做升级;所以3.x版本是未来应用的趋势,所以需要安装的这两个版本,学习中了解之间差异所在,并能灵活运用
    windows多版本并存,设置环境变量;并更改引用标识
    设置环境变量
    Python程序和script
    不同版本并存
      运行程序的方式:
    一、交互性执行代码文件(调试方便,不能永久保存 )
    二、创建程序保存到文件中(调试不方便,可以永久保存),和文件后缀名无关
     运行过程
    1、打开Python程序,放到内存中
    2、读取磁盘文件内容到内存中
    3、执行文件内容

      四、变量

      1、定义

    变量即变化的量,核心是“变”与“量”,变即变化,量即衡量状态

      2、为什么要有变量

    程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以需要一种机制能够 反应或者是保存下来程序执行状态和状态的变化。

      3、如何定义变量

    变量名 赋值 变量值
    
    内存(空间)地址通过ID标识
    
    删除内存空间(其他语言需要写代码进行删除操作,Python有自己内存管理机制,会自定删除)
    ##方法1:重新定义变量名
    ##方法2:删除变量的绑定关系 del age 
    
    #while 设定变量,改变一次变量,所有的生效

       4、变量定义规范

    1. 变量名只能是字母、数字或者下划线的任意组合
    2. 变量名第一个字符不能是数字
    3. 关键词不能声明变量名
    ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

      注意:1、变量名不要为中文、拼音

         2、变量名过长

         3、变量名词不达意

      5、定义方式

    1. 驼峰法  例如:AgeOfEgon = 18
    2. 下划线法(推荐使用) 例如:age_of_Egon =18

      6、定义变量会有:id,type,value

    1. 等号比较的是value
    2. is比较的是id

      强调:1、id相同,意味着type和value必定相同

         2、value相同,type肯定相同,但id不一定相同

      

      7、常量

      常量是指不变的量:如π,在程序运行过程中不会变化的量

      在Python中没有一个专门的语法代表常量,程序员约定俗称用变量名全部大写代表常量 例如:AGE_OF_DOG = 10

      五、用户与程序交互

      1、python3与python2 的区别

      https://www.cnblogs.com/qjx-2016/p/7991956.html

      更详细:https://www.cnblogs.com/weikunzz/p/6857971.html

    #在python3中
    input:用户输入任何值,都存成字符串类型
    
    #在python2中
    input:用户输入什么类型,就存成什么类型
    raw_input:等于python3的input

      2、注释

    1. 单行注释,用#;多行注释用''' '''
    2. 注释可以用中文或者英文,但不要用中文

      3、在Linux中文件头

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    # __author__ = "wzs"
    # Date: ${DATE}

      六、基本数据类型

      1、数字

        1、int整型

        定义:age=28 #age=int(28)的简写

        用于标识:年龄,等级,个数等只能整数标识的东西

        2、浮点型

        定义:salary=10000.33,#salary=float(10000.33)

        用于标识:工资、身高、体重等

      2、字符串

      在python中,加了引号就是字符串累心,python并没有字符类型

        定义:name='wzs' #name=str('wzs')

        用于标识:描述性的内容(单一属性),如国籍,姓名,性别等等

        单引号、双引号、多引号有什么区别
        一般情况使用单引号即可,但在所描述的内容有单引号时,外面需要用双引号
        msg = "I'm 20 years old!

        多引号作用就是注释多行字符串

    1 msg = '''
    2 今天是2017年9月5日17:15:11
    3 星期二
    4 天气:晴
    5 '''
    6 print(msg)

        字符串拼接:字符串只能进行相加和相乘运算(注意:字符串相加效率不高,而且只能是字符串相加,数据量小时,可以使用)

      字符串1+字符串2,并不会在字符串1的基础上加字符串2,而是申请一个新的空间存放字符串1和字符串2,相当于字符串1和字符串2的空间被复制了一份

    1 #!/usr/bin/env python
    2 # -*- coding:utf-8 -*-
    3 name = 'wzs'
    4 age =  '26'
    5 nationality = '中国'
    6 print(name+age+nationality)
    7 print(name*3)

      3、列表

      在[ ]内用逗号分隔,可以是n个任意类型的值

      定义:students = ['xiaoming','alex','egon','Dave']

      用于标识:存储多个值的情况,一个组内有多个值

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 hobbies = ['play','read','run','music']
     4 print(type(hobbies))
     5 print(hobbies[0])
     6 print(hobbies[2])
     7 print(hobbies[-2])
     8 
     9 l = [1,'wzs',4,['a','b']]
    10 print(l[3][1])

      4、字典

      在{ }内用逗号分隔,可以存放多个key:value的值,value可以是任意类型的值

      定义:info = {'name':'wzs','age':28,'height':170}

      用于标识:存储多个值的情况,每个值都是唯一一个对应的key,可以更高效的取值

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 info = {
     4     'name':'wzs',
     5     'hobbies':['run','read'],
     6     'company_info':{
     7         'name':'腾讯',
     8         'type':'互联网',
     9     }
    10 }
    11 print(info['company_info']['type']) #取出人员所在公司的类型

      5、布尔值

      逻辑判断——布尔值有两个:True和Flase

      判断一个条件成立时,返回True标识;判断一个条件不满足时,返回Flase标识。

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 a = 3
     4 b = 10
     5 print(a > b)
     6 print(a < b)
     7 
     8 if a > b:
     9     print('a is bigger than b')
    10 else:
    11     print('a is smaller than b')

      重点:

        1、可变类型(mutable):在id不变的情况下,value可以变,则称为可变类型,如列表、字典(可变类型不可hash)

        2、不可变类型(unmutable):value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间),例如:数字,字符串,元组

      七、格式化输出

      要求用户输入信息,然后打印成固定的格式

      占位符:%s  %d数字

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 # __author__ = "wzs"
     4 # Date: 2017/9/3
     5 
     6 name = input("Name:")
     7 age = input("Age:")
     8 sex = input("Sex:")
     9 job = input("Job:")
    10 
    11 info1 = '''
    12 ----------------info of {0}---------------------
    13 Name  :{0}
    14 Age   :{1}
    15 Sex   :{2}
    16 Job   :{3}
    17 -----------------end----------------------------
    18 '''.format(name,name,age,sex,job)
    19 
    20 # print(info1)
    21 info2 = '''
    22 ----------------info of %s---------------------
    23 Name  :%s
    24 Age   :%s
    25 Sex   :%s
    26 Job   :%s
    27 -----------------end----------------------------
    28 '''%(name,name,age,sex,job)
    29 print(info2)
    View Code 

      八、基本运算符

      计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算

      1、算术运算

      

      2、比较运算

      

      3、赋值运算

      

       4、逻辑运算

      

      5、身份运算

      

       九、流程控制:if..else条件语句

       特点:没有代码块标志符,python的代码特点是以缩进为标志

      1、单条件判断

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 # __author__ = "wzs"
     4 # Date: 2017/9/3
     5 
     6 age = input('>>:')
     7 age=int(age)
     8 if age >= 18:
     9     print('Please come in!')
    10 else:
    11     print('Do Not Enter!!!')

      2、多条件判断

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 # __author__ = "wzs"
     4 # Date: 2017/9/3
     5 
     6 age = input('age>>:')
     7 age=int(age)
     8 sex = input('sex>>:')
     9 card = input('card>>:')
    10 if age >= 18 and sex == 'male' and card == '':
    11     print('Please come in!')
    12 else:
    13     print('Do Not Enter!!!')

      3、多层if条件(if嵌套)

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 # __author__ = "wzs"
     4 # Date: 2017/9/3
     5 
     6 age = input('age>>:')
     7 age=int(age)
     8 sex = input('sex>>:')
     9 card = bool(input('card>>:'))
    10 success = False
    11 # success = True
    12 if age >= 18 and sex == 'male' and card == True:
    13     if success:
    14         print('Please come in!')
    15     else:
    16         print('Please leave here!')
    17 else:
    18     print('Do Not Enter!!!')

      4、if 多分支

      if ..elif ..elif..else #可以查看三次分数的等级

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 # __author__ = "wzs"
     4 # Date: 2017/9/5
     5 
     6 count = 0
     7 while count < 3:
     8     score = int(input("your score>>:"))
     9     count += 1
    10     if score >= 90:
    11         print('优秀')
    12     elif score >= 80:
    13         print('良好')
    14     elif score >= 70:
    15         print('及格')
    16     else:
    17         print('太差了')
    View Code

      十、流程控制:while循环

    while 条件:
    循环体
    如果条件为真,那么循环体则执行,执行完毕后再次循环,重新判断条件。。。
    如果条件为假,那么循环体不执行,循环终止

      1、break 跳出本层循环

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 # __author__ = "wzs"
     4 # Date: 2017/9/5
     5 count = 0
     6 while True:
     7     if count > 100:
     8         break
     9     print(count)
    10     count +=1

      2、continue跳出本次循环

      从0到10,跳过7

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 # __author__ = "wzs"
     4 # Date: 2017/9/5
     5 count = 0
     6 while count <= 10:
     7     if count == 7: 
     8         count +=1 ##注意这个是必须的
     9         continue
    10     print(count)
    11     count +=1
    1 count = 0
    2 while count <= 10:
    3     # if count == 7:
    4     #     break
    5     print(count)
    6     count +=1
    7 else:
    8     print('while正常结束了,没有被break打断,才会执行这里的代码')

      3、死循环

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 # __author__ = "wzs"
     4 # Date: 2017/9/5
     5 import time
     6 num = 0
     7 while True:
     8     print('count',num)
     9     time.sleep(1)
    10     num+=1
    View Code

      4、嵌套循环

      范例

     1   tag=True 
     2 
     3   while tag:
     4 
     5     ......
     6 
     7     while tag:
     8 
     9       ........
    10 
    11       while tag:
    12 
    13         tag=False

      5、练习

        1 循环验证用户输入的用户名与密码
        2 认证通过后,运行用户重复执行命令
        3 当用户输入命令为quit时,则退出整个程序 
     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 # __author__ = "wzs"
     4 # Date: 2017/9/5
     5 
     6 name = 'wzs'
     7 password = 'wzs123'
     8 
     9 while True:
    10     Name = input('用户名:')
    11     Pwd = input('密码:')
    12     if Name == name and Pwd == password:
    13         cmd = input('命令>>:')
    14         if not cmd:continue
    15         if cmd == 'quit':
    16             break
    17         print('run <%s>' %cmd)
    18     else:
    19         print('用户名或密码错误')
    20         continue
    21     break
    View Code

      使用tag的

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 # __author__ = "wzs"
     4 # Date: 2017/9/5
     5 
     6 name = 'wzs'
     7 password = 'wzs123'
     8 tag = True
     9 while tag:
    10     Name = input('用户名:')
    11     Pwd = input('密码:')
    12     if Name == name and Pwd == password:
    13         while tag:
    14             cmd = input('命令>>:')
    15             if not cmd:continue
    16             if cmd == 'quit':
    17                 break
    18             print('run <%s>' %cmd)
    19     else:
    20         print('用户名或密码错误')
    21         continue
    22     break
    View Code

      十一、流程控制:for循环

      1、迭代式循环

    for i in range(10):
        print(i)

      2、九九乘法表

    1 #!/usr/bin/env python
    2 # -*- coding:utf-8 -*-
    3 for i in  range(1,10):
    4     for j in range(1,i+1):
    5         print('%d * %d = %d'%(i,j,i*j),end='	')
    6     print('')
  • 相关阅读:
    Binary Search Tree Iterator 解答
    Invert Binary Tree 解答
    Min Stack 解答
    Trapping Raining Water 解答
    Candy 解答
    Jump Game II 解答
    Implement Hash Map Using Primitive Types
    Gas Station 解答
    Bucket Sort
    HashMap 专题
  • 原文地址:https://www.cnblogs.com/happy-king/p/7476137.html
Copyright © 2011-2022 走看看