Day1 Python基础学习
一、Python基础学习
一、编程语言分类
1、简介
- 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件
- 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作硬件
- 高级语言:站在人的角度,说人话;即用人类的字符去编写程序,屏蔽了硬件操作
2、优缺点
- 语言 优点 缺点
- 机器语言 最底层,执行速度快 最复杂,开发效率最低
- 汇编语言 比较底层,执行速度较快 复杂,开发效率低
- 高级语言 编译型:
- 执行速度快,不依赖语言环境运行 跨平台差
- 解释型:
- 跨平台好,一份代码,导出可用 执行速度慢,依赖解释器才行
- 高级语言又分为:编译型和解释型
- 编译型:执行速度快,调试麻烦
- 解释型:执行速度慢,调试方便
3、比较三种语言
- 学习难度从高到低
- 执行效率从高到低
- 开发效率从低到高
4、语言排行
最新排行见链接:https://www.tiobe.com/tiobe-index/
下面是18年与17年的排行对比表
二、Python介绍
1、目前Python主要应用领域
- WEB开发——最火的Python web框架Django, 支持异步高并发的Tornado框架,短小精悍的flask,bottle, Django官方的标语把Django定义为the framework for perfectionist with deadlines(大意是一个为完全主义者开发的高效率web框架)
- 网络编程——支持高并发的Twisted网络框架, py3引入的asyncio使异步编程变的非常简单
- 爬虫——爬虫领域,Python几乎是霸主地位,Scrapy\Request\BeautifuSoap\urllib等,想爬啥就爬啥
- 云计算——目前最火最知名的云计算框架就是OpenStack,Python现在的火,很大一部分就是因为云计算
- 人工智能——谁会成为AI 和大数据时代的第一开发语言?这本已是一个不需要争论的问题。如果说三年前,Matlab、Scala、R、Java 和 Python还各有机会,局面尚且不清楚,那么三年之后,趋势已经非常明确了,特别是前两天 Facebook 开源了 PyTorch 之后,Python 作为 AI 时代头牌语言的位置基本确立,未来的悬念仅仅是谁能坐稳第二把交椅。
- 自动化运维——问问中国的每个运维人员,运维人员必须会的语言是什么?10个人相信会给你一个相同的答案,它的名字叫Python
- 金融分析——我个人之前在金融行业,10年的时候,我们公司写的好多分析程序、高频交易软件就是用的Python,到目前,Python是金融分析、量化交易领域里用的最多的语言
- 科学运算—— 你知道么,97年开始,NASA就在大量使用Python在进行各种复杂的科学运算,随着NumPy, SciPy, Matplotlib, Enthought librarys等众多程序库的开发,使的Python越来越适合于做科学计算、绘制高质量的2D和3D图像。和科学计算领域最流行的商业软件Matlab相比,Python是一门通用的程序设计语言,比Matlab所采用的脚本语言的应用范围更广泛
- 游戏开发——在网络游戏开发中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 .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的字节码。
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
- 不同版本并存
- 运行程序的方式:
- 一、交互性执行代码文件(调试方便,不能永久保存 )
- 二、创建程序保存到文件中(调试不方便,可以永久保存),和文件后缀名无关
- 运行过程
- 、打开Python程序,放到内存中
- 、读取磁盘文件内容到内存中
- 、执行文件内容
四、变量
1、定义
- 变量即变化的量,核心是“变”与“量”,变即变化,量即衡量状态
2、为什么要有变量
- 程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以需要一种机制能够 反应或者是保存下来程序执行状态和状态的变化。
3、如何定义变量
- 变量名 赋值 变量值
- 内存(空间)地址通过ID标识
- 删除内存空间(其他语言需要写代码进行删除操作,Python有自己内存管理机制,会自定删除)
- ##方法1:重新定义变量名
- ##方法2:删除变量的绑定关系 del age
- #while 设定变量,改变一次变量,所有的生效
4、变量定义规范
- 变量名只能是字母、数字或者下划线的任意组合
- 变量名第一个字符不能是数字
- 关键词不能声明变量名
- ['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、定义方式
- 驼峰法 例如:AgeOfEgon = 18
- 下划线法(推荐使用) 例如:age_of_Egon =18
6、定义变量会有:id,type,value
- 等号比较的是value
- 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、注释
- 单行注释,用#;多行注释用''' '''
- 注释可以用中文或者英文,但不要用中文
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!
多引号作用就是注释多行字符串
- msg = '''
- 今天是2017年9月5日17:15:11
- 星期二
- 天气:晴
- '''
- print(msg)
字符串拼接:字符串只能进行相加和相乘运算(注意:字符串相加效率不高,而且只能是字符串相加,数据量小时,可以使用)
字符串1+字符串2,并不会在字符串1的基础上加字符串2,而是申请一个新的空间存放字符串1和字符串2,相当于字符串1和字符串2的空间被复制了一份
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- name = 'wzs'
- age = ''
- nationality = '中国'
- print(name+age+nationality)
- print(name*3)
3、列表
在[ ]内用逗号分隔,可以是n个任意类型的值
定义:students = ['xiaoming','alex','egon','Dave']
用于标识:存储多个值的情况,一个组内有多个值
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- hobbies = ['play','read','run','music']
- print(type(hobbies))
- print(hobbies[0])
- print(hobbies[2])
- print(hobbies[-2])
- l = [1,'wzs',4,['a','b']]
- print(l[3][1])
4、字典
在{ }内用逗号分隔,可以存放多个key:value的值,value可以是任意类型的值
定义:info = {'name':'wzs','age':28,'height':170}
用于标识:存储多个值的情况,每个值都是唯一一个对应的key,可以更高效的取值
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- info = {
- 'name':'wzs',
- 'hobbies':['run','read'],
- 'company_info':{
- 'name':'腾讯',
- 'type':'互联网',
- }
- }
- print(info['company_info']['type']) #取出人员所在公司的类型
5、布尔值
逻辑判断——布尔值有两个:True和Flase
判断一个条件成立时,返回True标识;判断一个条件不满足时,返回Flase标识。
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- a = 3
- b = 10
- print(a > b)
- print(a < b)
- if a > b:
- print('a is bigger than b')
- else:
- print('a is smaller than b')
重点:
1、可变类型(mutable):在id不变的情况下,value可以变,则称为可变类型,如列表、字典(可变类型不可hash)
2、不可变类型(unmutable):value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间),例如:数字,字符串,元组
七、格式化输出
要求用户输入信息,然后打印成固定的格式
占位符:%s %d数字
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- # __author__ = "wzs"
- # Date: 2017/9/3
- name = input("Name:")
- age = input("Age:")
- sex = input("Sex:")
- job = input("Job:")
- info1 = '''
- ----------------info of {0}---------------------
- Name :{0}
- Age :{1}
- Sex :{2}
- Job :{3}
- -----------------end----------------------------
- '''.format(name,name,age,sex,job)
- # print(info1)
- info2 = '''
- ----------------info of %s---------------------
- Name :%s
- Age :%s
- Sex :%s
- Job :%s
- -----------------end----------------------------
- '''%(name,name,age,sex,job)
- print(info2)
八、基本运算符
计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算
1、算术运算
2、比较运算
3、赋值运算
4、逻辑运算
5、身份运算
九、流程控制:if..else条件语句
特点:没有代码块标志符,python的代码特点是以缩进为标志
1、单条件判断
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- # __author__ = "wzs"
- # Date: 2017/9/3
- age = input('>>:')
- age=int(age)
- if age >= 18:
- print('Please come in!')
- else:
- print('Do Not Enter!!!')
2、多条件判断
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- # __author__ = "wzs"
- # Date: 2017/9/3
- age = input('age>>:')
- age=int(age)
- sex = input('sex>>:')
- card = input('card>>:')
- if age >= 18 and sex == 'male' and card == '有':
- print('Please come in!')
- else:
- print('Do Not Enter!!!')
3、多层if条件(if嵌套)
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- # __author__ = "wzs"
- # Date: 2017/9/3
- age = input('age>>:')
- age=int(age)
- sex = input('sex>>:')
- card = bool(input('card>>:'))
- success = False
- # success = True
- if age >= 18 and sex == 'male' and card == True:
- if success:
- print('Please come in!')
- else:
- print('Please leave here!')
- else:
- print('Do Not Enter!!!')
4、if 多分支
if ..elif ..elif..else #可以查看三次分数的等级
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- # __author__ = "wzs"
- # Date: 2017/9/5
- count = 0
- while count < 3:
- score = int(input("your score>>:"))
- count += 1
- if score >= 90:
- print('优秀')
- elif score >= 80:
- print('良好')
- elif score >= 70:
- print('及格')
- else:
- print('太差了')
十、流程控制:while循环
- while 条件:
循环体
如果条件为真,那么循环体则执行,执行完毕后再次循环,重新判断条件。。。
如果条件为假,那么循环体不执行,循环终止
1、break 跳出本层循环
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- # __author__ = "wzs"
- # Date: 2017/9/5
- count = 0
- while True:
- if count > 100:
- break
- print(count)
- count +=1
2、continue跳出本次循环
从0到10,跳过7
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- # __author__ = "wzs"
- # Date: 2017/9/5
- count = 0
- while count <= 10:
- if count == 7:
- count +=1 ##注意这个是必须的
- continue
- print(count)
- count +=1
- count = 0
- while count <= 10:
- # if count == 7:
- # break
- print(count)
- count +=1
- else:
- print('while正常结束了,没有被break打断,才会执行这里的代码')
3、死循环
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- # __author__ = "wzs"
- # Date: 2017/9/5
- import time
- num = 0
- while True:
- print('count',num)
- time.sleep(1)
- num+=1
4、嵌套循环
范例
- tag=True
- while tag:
- ......
- while tag:
- ........
- while tag:
- tag=False
5、练习
- 1 循环验证用户输入的用户名与密码
- 2 认证通过后,运行用户重复执行命令
- 3 当用户输入命令为quit时,则退出整个程序
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- # __author__ = "wzs"
- # Date: 2017/9/5
- name = 'wzs'
- password = 'wzs123'
- while True:
- Name = input('用户名:')
- Pwd = input('密码:')
- if Name == name and Pwd == password:
- cmd = input('命令>>:')
- if not cmd:continue
- if cmd == 'quit':
- break
- print('run <%s>' %cmd)
- else:
- print('用户名或密码错误')
- continue
- break
使用tag的
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- # __author__ = "wzs"
- # Date: 2017/9/5
- name = 'wzs'
- password = 'wzs123'
- tag = True
- while tag:
- Name = input('用户名:')
- Pwd = input('密码:')
- if Name == name and Pwd == password:
- while tag:
- cmd = input('命令>>:')
- if not cmd:continue
- if cmd == 'quit':
- break
- print('run <%s>' %cmd)
- else:
- print('用户名或密码错误')
- continue
- break
十一、流程控制:for循环
1、迭代式循环
- for i in range(10):
- print(i)
2、九九乘法表
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- for i in range(1,10):
- for j in range(1,i+1):
- print('%d * %d = %d'%(i,j,i*j),end='\t')
- print('')
Day1 Python基础学习的更多相关文章
- Day1 Python基础学习——概述、基本数据类型、流程控制
一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编 ...
- Day1 - Python基础1 介绍、基本语法、流程控制
Python之路,Day1 - Python基础1 本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼 ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- Python 基础学习 总结篇
Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...
- (一)python基础学习
根据廖雪峰老师的python教程写一些学习总结! Python基础学习 1.使用list和tuple (1)list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时 ...
- python基础学习(起步)
目录 python基础学习(起步) 变量 常量 变量的内存管理 python垃圾回收机制 变量的其他赋值方式 今日编程小题 本人能力有限,若有偏颇之处请读者大大不吝赐教! 祝大家每天都在成长! pyt ...
- Python基础学习二
Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...
- Python基础学习一
Python基础学习一 1.变量与常量 变量名:大小写英文.数字.下划线的组合,数字不能开头 常量名:习惯上常量用大写字母命名,例如"PI" 2.多行输出 转义符:反斜杠(),如果 ...
- Python基础学习五
Python基础学习五 迭代 for x in 变量: 其中变量可以是字符串.列表.字典.集合. 当迭代字典时,通过字典的内置函数value()可以迭代出值:通过字典的内置函数items()可以迭代出 ...
随机推荐
- java面向对象(二)之继承
继承 介绍 继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力.继承即常说的is-a关系.子类继承父类的特征和行为,使得子类具有父类的各种属性和方法.或子类从父类继承 ...
- Python Celery队列
Celery队列简介: Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery. 使用 ...
- 初学者入门web前端 C#基础知识:数组与集合
对于初学者,想要入门web前端,要有足够的信念和坚持,不然只会越走越远,我现在就深深的体会到. 我本是一个很拒绝代码的人,以前想过UI设计,但是在这段学习时间里,发现其实只要认真,代码并不是很难 所以 ...
- spring整合mybatis错误:Could not autowire field: com.kjczwl.ssm.service.ItemsService com.kjczwl.ssm.controller.ItemsController.itemsservice;
运行环境:jdk1.7.0_17+tomcat 7 + spring:3.2.0 +mybatis:3.2.7+ eclipse 错误:Could not autowire field: com.kj ...
- Java基础学习 —— io
/** 解决数据与数据之间的传输问题. 字节流: 输入字节流: -------| InputStream 所有输入字节流的基类.抽象类. -----------| FileInputStream 读取 ...
- 汇编指令-adr与ldr伪汇编区别(8)
adr :相对寻址,与当前位置有关 ldr :绝对寻址,与当前位置无关 在初始化SDRAM时就会用到adr,代码如下: /* 初始化SDRAM */ ldr r0,=BWSCON //r0=SDRA ...
- PHP初入,(特效的使用)
<body> <input id="btn1" type="button" value="按钮" /> <in ...
- 【Beta阶段】第二次scrum meeting
Coding/OSChina 地址 1. 会议内容 学号 主要负责的方向 昨日任务 昨日任务完成进度 接下去要做 99 PM 会议总结,博客编写,代码整理 100% 准备下一次会议内容,并对已完成的代 ...
- 2015级软工实践k班第一次作业-准备
第一次作业-准备······ 几篇文章阅读下来发现一个事实,还是要有明确的目标,清楚自己需要做什么最为重要.然后根据目标确定需要为之所做的准备工作,考研也好,工作也罢,都是服务于自己的目标. 问题答应 ...
- 测试与发布(Alpha版本)
[Alpha阶段]测试报告 1.测试找出的BUG (1).这种情况刷新就好 (2).文件必须10个才行,多余10个的部分不会进入查重的部分,少于会出错: (3).文件保存在d:\files,由于有些原 ...