1. 编程语言分类:
机器语言:用二进制指令编程,本质是直接操作硬件。
优点:执行效率高。
缺点:开发效率低,学习难度高。
汇编语言:用英文标签代替二进制指令,本质也是直接操作硬件。
优点:执行效率高。
缺点:开发效率低,学习难度高。
高级语言:用人类的字符去编写程序,人类的字符计算机无法理解,必须经过翻译,翻译成机器语言计算机才能执行
优点:开发效率高,学习难度低。
缺点:执行效率低。
高级语言按照翻译的形式不同可分为编译型和解释型:
编译型:C
类似与谷歌翻译-->gcc
特点:编译一次,拿到结果可以重复执行,无需重新编译
翻译:程序---->gcc----->机器语言
执行:机器语言---->CPU
优点:执行效率高。
缺点:调试程序麻,烦跨平台性差。
解释型:Python
类似于同声传译--》解释器
特点:解释一行,执行一行,即边翻译边执行
程序---->解释器----->机器语言----->CPU
优点:开发效率高,跨平台性高,调试程序方便
缺点:
执行效率低
2. python程序,两种运行程序的方式
交互式:调试程序
解释器:使用解释器直接运行程序文件
python 程序的路径:python D: est.txt (强调,后缀名没有影响,但写成.py结尾是约定俗成)
重点:
1、先启动python解释器
2、将D: est.txt的代码读入内存
3、解释执行
3. 变量:
什么是变量?
变:变化
量:表示的是状态
变量是一种可以反映出状态变化的一种机制
为什么要有变量?
程序的执行本质就是一系列状态的变化
如何定义变量?
语法:
变量名=值
变量名是对值的引用
示范:
level=0
level=1
python自动的垃圾回收机制(了解)
垃圾:值身上的引用计数为0
增加引用计数
x=1
y=x
减少引用计数
x='egon'
del y # 删除y与1的绑定关系
变量的命名规范?
#1. 变量名只能是 字母、数字或下划线的任意组合
#2. 变量名的第一个字符不能是数字
#3. 关键字不能声明为变量名
定义方式?
驼峰体
AgeOfOldboy=58
下划线
age_of_oldboy=58
注:建议使用下划线并且不要将下划线放在最前和最后
变量的命名尽量需避免的情况:
#1.变量名不要使用中文,拼音命名
#2.变量名尽量不要过长
#3.变量名要尽可能表达使用的意图
变量的三个特征(重点)
id:变量的在python内的模拟地址
type:数据的类型
value:数据值
示范:
>>> name='egon'
>>> print(id(name))
1964167301752
>>> id(name)
1964167301752
>>>
>>>
>>> type(name)
<class 'str'>
>>>
>>> name
'egon'
#==:比较的是值
s1='name:alex,age:73'
s2='name:alex,age:73'
>>> s1='name:alex,age:73'
>>> s2='name:alex,age:73'
>>> id(s1)
1964167290288
>>> id(s2)
1964167290504
>>>
>>> s1 is s2
False
>>> s1 == s2
True
#is:身份运算,比较的是id
>>> x=1
>>> y=x
>>>
>>>
>>> id(x)
1894346208
>>> id(y)
1894346208
>>> x == y
True
>>> x is y
True
常量:不变的量
AGE_OF_OLDBOY=58
Python中没有常量概念一般程序员约定变量名为全部大写的为常量。
4. 用户与程序交互
input():用来接收用户输入的字符串。
5.注释
代码注释分单行和多行注释, 单行注释用#
,多行注释可以用三对双引号""" """
代码注释的原则:
#1. 不用全部加注释,只需要在自己觉得重要或不好理解的部分加注释即可 #2. 注释可以用中文或英文,但不要用拼音
6. 文件头
#!/usr/bin/env python # coding: utf-8
每个程序文件里必须要写的,第一行是Linux所使用的解释器路径,第二段为文件的编码声明
7.基本数据类型
数据即变量的值,如age=18,18则是我们保存的数据。
变量的是用来反映/保持状态以及状态变化的,毫无疑问针对不同的状态就应该用不同类型的数据去标识
数字 :
分为整型和浮点型
#int整型 定义:age=10 #age=int(10) 用于标识:年龄,等级,身份证号,qq号,个数 #float浮点型 定义:salary=3.1 #salary=float(3.1) 用于标识:工资,身高,体重
字符串
#在python中,加了引号的字符就是字符串类型,python并没有字符类型。 定义:name='egon' #name=str('egon') 用于标识:描述性的内容,如姓名,性别,国籍,种族
#那单引号、双引号、多引号有什么区别呢? 让我大声告诉你,单双引号木有任何区别,只有下面这种情况 你需要考虑单双的配合 msg = "My name is Egon , I'm 18 years old!" #多引号什么作用呢?作用就是多行字符串必须用多引号 msg = ''' 今天我想写首小诗, 歌颂我的同桌, 你看他那乌黑的短发, 好像一只炸毛鸡。 ''' print(msg)
注:如果有需要引号内还要添加引号,如果外层使用单引号内层就要使用双引号;反之亦然。不可使用相同引号。
列表
#在[]内用逗号分隔,可以存放n个任意类型的值
定义:students=['egon','alex','wupeiqi',] #students=list(['egon','alex','wupeiqi',]) 用于标识:存储多个值的情况,比如一个人有多个爱好
#存放多个学生的信息:姓名,年龄,爱好 >>> students_info=[['egon',18,['play',]],['alex',18,['play','sleep']]] >>> students_info[0][2][0] #取出第一个学生的第一个爱好 'play'
字典
#在{}内用逗号分隔,可以存放多个key:value的值,value可以是任意类型 定义:info={'name':'egon','age':18,'sex':18} #info=dict({'name':'egon','age':18,'sex':18}) 用于标识:存储多个值的情况,每个值都有唯一一个对应的key,可以更为方便高效地取值
info={ 'name':'egon', 'hobbies':['play','sleep'], 'company_info':{ 'name':'Oldboy', 'type':'education', 'emp_num':40, } } print(info['company_info']['name']) #取公司名 students=[ {'name':'alex','age':38,'hobbies':['play','sleep']}, {'name':'egon','age':18,'hobbies':['read','sleep']}, {'name':'wupeiqi','age':58,'hobbies':['music','read','sleep']}, ] print(students[1]['hobbies'][1]) #取第二个学生的第二个爱好
布尔类型
布尔类型就模拟人的逻辑运行,即判断一个条件成立时,用True标识,不成立则用False标
#所有数据类型都自带布尔值
1、None,0,空(空字符串,空列表,空字典等)三种情况下布尔值为False 2、其余均为真
可变类型与不可变类型
#1.可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典 #2. 不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)
可变的有列表字典,不可变的有数字字符串。
格式化输出
%s %d 用来占位
#%s字符串占位符:可以接收字符串,也可接收数字
#%d数字占位符:只能接收数字
8.基本运算符
算术运算:
比较运算:
赋值运算:
身份运算
#is比较的是id #而==比较的是值
9.流程控制
if elif else 判断语句
if 条件1: 缩进的代码块 elif 条件2: 缩进的代码块 elif 条件3: 缩进的代码块
else: 缩进的代码块
实例代码:
score=input('>>: ') score=int(score) if score >= 90: print('优秀') elif score >= 80: print('良好') elif score >= 70: print('普通') else: print('很差')
while循环
while 条件: # 循环体 # 如果条件为真,那么循环体则执行,执行完毕后再次循环,重新判断条件。。。 # 如果条件为假,那么循环体不执行,循环终止
示例:
#打印0-10 count=0 while count <= 10: print('loop',count) count+=1 #打印0-10之间的偶数 count=0 while count <= 10: if count%2 == 0: print('loop',count) count+=1 #打印0-10之间的奇数 count=0 while count <= 10: if count%2 == 1: print('loop',count) count+=1