1、编程与编程语言python
python是一门编程语言,学习python以前,先搞明白三个问题。编程的目的?什么是编程语言?什么是编程?程序员
一、编程目的?express
计算机的发展就是为解放人力,机器是死的,因此人必须找到一种可以被机器识别的表达式从而把本身的思想按照这个表达方式传递机器,完成机器能够自发的工做。编程
二、什么编程语言?编程语言
上面所说的表达方式指的就编程语言,那咱们学习英语来几个栗子:学习英语须要学习单词、语法,最后要将单词按照语法格式写成做文;一样的道理,学习python也是学习关键字(if while for and or)、语法,最后达到编程的目的; ide
三、什么编程?oop
按照某种编程语言的语法风格写程序,程序在未执前就是一对普通文件。 学习
2、编程语言的发展及分类spa
PS:在这里将程序员比做奴隶主,将计算机比做奴隶 翻译
第一阶段:机器语言(即站在奴隶角度说计算机能听懂的话,直接用二进制编程,直接操做硬件)
优势:执行效率快
缺点:学习难度大,开发效率低
第二阶段:汇编语言(站在奴隶角度说计算机能听懂的话,用一些英文标签来代替一串特定的意义的二进制,仍是直接操做硬件)
优势:执行效率快,不如机器语言快
缺点:学习难度大,开发效率低,比机器语言降一个难度
第三阶段:高级语言(站在奴隶主的角度说人话,机器没法理解,因此须要翻译,翻译有分为两类:编译和解析)
编译型(C):至关于百度翻译,翻译一次,拿着该翻译的结果去执行。
优势:执行效率高
缺点:开发效率低
解释型(Python):至关于同声传译,一边解释一边执行。
优势:开发效率高
缺点:执行效率低
以上三个阶段的 执行效率、开发效率、学习难度依次排序以下:
执行效率:从高到低(机器语言>汇编语言>高级语言)
开发效率:从低到高(机器语言<汇编语言<高级语言)
学习难度:从难到易(机器语言>汇编语言>高级语言)
PS:执行效率不是影响,开发效率才是王道
3、写程序的两种方式
一、交互式:(在python解释器中直接执行的命令)即时调试
二、非交互式:(执行文件)python3 C:\test.py
4、变量
一、什么是变量?
变指的是“变化”,量指的反映某种状态
二、为何要有变量?
程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,因此咱们须要有一种机制可以反映或者说是保存下来程序执行时状态以及状态的变化。
三、如何定义变量?
在程序的内存空间为变量开一个小房间,挂上变量名(至关于门牌号,指向值所在的空间)
语法:变量名=变量值
name='test' password='test123'
四、变量名的命名规则?
1)变量名只能是 字母、数字或下划线的任意组合
2)变量名的第一个字符不能是数字
3)关键字不能声明为变量名[
五、定义的方式?
1)驼峰式:TestValue=20(大小写结合)
2)下划线:Test_Value=20
PS:很差的定义变量名方式
(1)变量名为中文、拼音
(2)变量名过长
(3)变量名词不达意
3)定义变量会有:id,type,value
(1)等号比较的是value值
(2) is比较的是id号(id号不是内存地址 可是反映了在内存中的位置)
强调: 一、id相同,意味着type和value一定相同
二、value相同type确定相同,但id可能不一样
六、变量的修改与内存管理(引用计数与垃圾回收机制)
python中对于没有引用的内存数据有自动回收机制,判断是否有引用的方法是看变量所在的内存空间是否挂有变量名。
5、常量
常量即指不变的量,如圆周率π 3.141592653...,在Python中没有一个专门的语法表明常量,程序员约定俗成用变量名所有大写表明常量
6、Python程序被执行的过程(重点!!!)
举栗子:在Windows的python3环境下启动一个C:\test.py文件,具体过程以下
一、先启动python3.exe
二、把C:\test.py从硬盘读入内存
三、解释执行文件内容(识别python语法)
7、产生一个变量的三要素(重点!!!)
举栗子:定义一个变量name='Test'
一、变量值:用变量名取变量值
print(name)
二、变量值的类型:表示不一样的状态应该用不一样类型的值去表示(数字:年龄,字符串:名字)
print(type(name))
三、变量值的id号:
print(id(name))
PS:判断值value是否相等:==
判断内存位置id是否相等:is
对于两个value相等的变量,变量值长度短的时候它们的id号是同样的,变量值长度长的时候它们的id号是不同的,这个没有明确的界限;
8、程序与用户交互
一、交互式输入
以前,咱们去银行取钱,有专门的银行业务员让咱们把本身的帐号密码输入给他,而后他去进行验证,验证成功后,将取款金额告诉他。如今各个银行都为客户提供一台ATM机(就是一台计算机),让ATM机跟用户交互,从而取代人力。机器毕竟是死的,因此就须要编写程序来它运行,这就要求咱们的编程语言中可以有一种能与用户交互,接收用户输入数据的机制。
注意:在python3中,input:用户输入任何值,都存成字符串类型
在python2中,input:用户输入什么类型,就存成什么类型;raw_input:等于python3的input(用户输入任何值,都存成字符串类型)
二、注释
增长代码的可读性,让别人知道你写的代码是干什么用的。
代码注释分单行和多行注释, 单行注释用#,多行注释能够用三对双引号""" """
代码注释的原则:
1)不用所有加注释,只须要在本身以为重要或很差理解的部分加注释便可
2)注释能够用中文或英文,但不要用拼音
三、文件头
#!/usr/bin/python
# -*- coding: utf-8 -*-
9、基本数据类型
一、什么是数据?为什么要有多种类型的数据?
数据即变量的值,如age=18,18则是咱们保存的数据。
变量的是用来反映/保持状态以及状态变化的,毫无疑问针对不一样的状态就应该用不一样类型的数据去标识
二、数字类型
1)int整型
定义:age=10 #age=int(10)
用于标识:年龄,等级,×××号,qq号,个数
二、float浮点型
定义:salary=3.1 #salary=float(3.1)
用于标识:工资,身高,体重,
三、字符串类型
定义:str=' '|" "|''' ''' (在引号(单引号,双引号,三引号)里定义的一堆字符)
PS:那单引号、双引号、多引号有什么区别呢?
单双引号木有任何区别,只有下面这种状况须要考虑单双的配合===> msg = "My name is Egon , I'm 18 years old!"
多引号什么做用呢?做用就是多行字符串必须用多引号
状态:描述性的内容,好比名字,性别,国籍
备注:字符串呢只能进行"相加"和"相乘"运算(字符只能跟字符串之间进行+或者*)
注意1:字符串相加的效率不高
字符串1+字符串3,并不会在字符串1的基础上加字符串3,而是申请一个全新的内存空间存入字符串1和字符串3,至关字符串1与字符串3的空间被复制了一次,
注意2:只能字符串加字符串,不能字符串加其余类型
四、列表类型
定义:[]方括号内,用逗号分隔开,存放多个任意类型的元素
状态:有序存放多个值
# info=['egon',18,'male',['欧德博爱','education',70]] #info=list([...])=
# print(info[3])
五、字典类型
背景:存放一我的的信息:姓名,性别,年龄;字典便可以存放多个任意类型的值,又能够硬性规定值的映射关系的类型,好比key=value。
定义:{}花括号内,用逗号分割key:value, value能够是任意类型,可是key必须不可变类型
状态:存放多个值
# info={ 'name':'egon', 'age':18, 'sex':'male', 'company':{'name':'欧德博爱','type':'education','emp_count':70} }
# print(info['company']['type'])
六、布尔类型(True,False)
定义:即判断一个条件成立时,用True标识,不成立则用False标识。
状态:成立,不成立,用来作逻辑运算判断
#age=38
#print(age > 18)
补充个重点:可变类型和不可变类型
一、可变类型:在id不变的状况下,value能够变,则称为可变类型,如列表,字典
二、不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着建立了新的内存空间)
10、格式化输出
程序中常常会有这样场景:要求用户输入信息,而后打印成固定的格式,好比要求用户输入用户名和年龄,而后打印以下格式:My name is xxx,my age is xxx.
很明显,用逗号进行字符串拼接,只能把用户输入的名字和年龄放到末尾,没法放到指定的xxx位置,并且数字也必须通过str(数字)的转换才能与字符串进行拼接。
这就用到了占位符,如:%s、%d
%s字符串占位符:能够接收字符串,也可接收数字
%d数字占位符:要注意d%只能接收数字
name=input('your name: ')
age=input('your age: ') #python3中用户输入18,会存成字符串18,没法传给%d
print('My name is %s,my age is %s' %(name,age))
11、基本运算符
运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天咱们暂只学习算数运算、比较运算、逻辑运算、赋值运算
一、算数运算(+ - * / % // **)
二、比较运算(== != <> > < >= <=)返回True或者False
三、赋值运算(= += -+ *= /= %= **= //= )
四、逻辑运算(and or not)返回True或者False
五、身份运算is
备注:is比较的是id
12、流程控制之if...else
逻辑运算,就是按照不一样的条件作出不一样的反映;
if语句的格式:
if expression:
statement1()
else:
statement2()
十3、while循环
一、语法
while 条件:
循环体
若是条件为真,那么循环体则执行,执行完毕后再次循环,从新判断条件。。。
若是条件为假,那么循环体不执行,循环终止
二、死循环(只要条件一直为True,循环就一直继续)
三、循环嵌套与tag
tag=True
while tag:
........
while tag:
tag=False
四、break与continue
break用于退出本层循环
continue用于退出本次循环,继续下一次循环
五、while与else
在Python 中还有个while ...else 语句,while 后面的else 做用是指,当while 循环正常执行完,中间没有被break 停止的话,就会执行else后面的语句
count = 0
while count <= 5 :
count += 1
print(count)
else:
print("循环正常执行完啦")
print("-----out of while loop ------")