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('')
  • 相关阅读:
    HDFS、YARN、Mapreduce简介
    List<object> 转 List<T>
    CTR+A组合键 以及终止按键事件传递
    BackgroundWorker 的输入、输出参数、进度条与文字刷新、取消机制、返回事件
    读取Excel文件的两种方法比较 以及用NPOI写入Excel
    浅复制不能传递,重新赋值就重新浅复制
    gridControl添加右键菜单
    C#设置Excel行高、列宽
    任意字符串(包括空串)都包含空白字符串
    JAVA 在程序中存储和修改信息
  • 原文地址:https://www.cnblogs.com/happy-king/p/7476137.html
Copyright © 2011-2022 走看看