一、基本知识
1.python属于解释型语言;解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢。当耗时速度大的代码可用c/c++写。
2.两种主流的编程范式为:函数编程、面向对象编程。python都支持。
3.python优缺点
优点:
a.Python的定位是“优雅”“明确”“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常复杂的程序。
b.开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上在进行二次开发,大大降低开发周期,避免重复。
c.高级语言,当你用Python语言编写程序的时候,你无需考虑如何管理你的程序使用的内存一类的底层细节。
d.可移植性,由于它的开源本质,Python已经被移植在许多平台。如果在编程中,小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行。
e.可扩展性,如果你需要你的一段关键代码运行的更快或者希望某些算法不公开,你可以把你的部分程序用C或者C++编写,然后在你的Python程序中使用它们。
f.可嵌入性,你可以把Python嵌入你的C/C ++程序,从而向你的程序用户提供脚本功能。
缺点:
c/c++可随意缩进,python不能随意缩进。对格式有严格要求。
4.Python代码后缀名为.py
二、认识Python
1.在控制台中打印括号内容
print('')或print("")
(PS:print后括号内的内容可以改变。)
2.注释用#,注释的内容不会出现,也不会执行。
3.sublime中显示打印结果(显示控制台)即Ctrl+B。
sublime常用快捷键(不止适用于python):
Ctrl+/ 添加注释或取消注释(多行注释可先选中所要注释内容再按Ctrl+/)
Ctrl+s 保存
Ctrl+b 编译
Ctrl+r 执行(编译+执行)
Ctrl+c 拷贝
Ctrl+v 粘贴
Ctrl+x 剪切
Ctrl+z 撤销
Ctrl+shift+z/Ctrl+y 反撤销
Ctrl+f 查找(查找默认查找第一个,按住Ctrl查找下一个)
Ctrl+a 全选
Ctrl+n 新建文件
Shift 部分选中 首先鼠标选中最开始位置,而后按住shift,再点击要选内容的最后位置。
Ctrl 同时操作 按住Ctrl,鼠标点击,可以使得多个位置出现光标
(ps:代码中如果需要符号位置,符号必须是在英文输入状态下输入)
1.python注释
写在代码中不参与编译执行的部分。作用是对代码进行注释说明,方便程序更简易的被理解以及阅读。(注意!要勤写注释。)
注释方法
单行注释:在文本内容的前面加#。例: #我是注释
多行注释:
a.每行前都加一个#。
例:
我是注释1
我是注释2
b.将注释内容放在三个单引号/三个双引号中(推荐使用三个双引号)。
例:
"""
我是注释1
我是注释2
"""
2.标识符
标识符是用来命名的(比如变量名、函数名、类名)
要求(命名的要求):
a.由字母数字和下划线组成,并且数字不能开头。---Python2.X规范。(按Python2.X规范执行)
b.在Unicode中,除了ASCII码中的字母、数字下划线以外的不能作为标识符的一部分,其他的都可以。数字依旧不可以开头--Python3.X规范(Unicode包含ASCII)(Unicode还包含中文、日文、韩文、梵文等符号)。即由字母数字下划线和中文组成,数字不能开头。--Python3.X规范
(ps:在实际开发中,还是推荐使用Python2.X规范)
3.语句
c/java语法,每条语句结束必须加分号。
Python中一条语句结束可以加分号也可以不加;但如果一行要显示多条语句,那么每条语句后必须加分号。
例:
print('hello1!');print('hello1!');
print('hello!')
print('hello!')
4.行和缩进
缩进:
Python中对缩进由严格规范,要求同级代码对应的缩进必须一致。对注释也有缩进要求。
只有在代码块中需要加缩进。
按tab键可一键生成4个空格。
行:
要求函数的声明和类的声明前后需要有两个空行。(不会报错)
5.多行显示问题
a.在需要换行的地方加反斜杠\(在要换行前即按回车之前先加\)(ps:使用反斜杠\时,不要破坏数据,即不能随意加)
sum = 18793879464 + 8794864723 + \492849837 + 349872 + \248739 + 879428
(ps:若要打印变量的值,直接打印变量,不加单引号或双引号,即print(sum))
b.如果是列表、字典、元祖和集合的值,可以直接换行。
name = [
12,
32949,
4297
]
6.常见的数据类型及其字面量
a.整形(int)、浮点型(float)、布尔(bool)、字符串(str)、列表(list)、字典(dict)、元祖(tuple)、集合(set)等。
整形:相当于数学中的整数,例如: 100, -12, +30, 0
浮点型:带小数点的数,例如:12.5, 3.14, 0.0, -12.34
布尔:只有两个值,分别是True(真)和False(假)
字符串:用单引号或双引号括起来的数据,例:'asd','100','adg128=~'
7.关键字(保留字)
在python中有特殊功能和特殊意义的一些标识符(单词)(以下为全部的关键字,int、float等不是关键字,是类型名)
(ps:所有关键字必须会读、会写)
['False', 'None', 'True', 'and', 'as', 'assert', 'break','class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
03-数字类型
不同的类型,在内存中存储时所占的内存不同。
1.python中的数字类型有四个:整形(int)、浮点型(float)、布尔(bool)、复数(complex)a.整形(int):包含python所有的整数,python3.x整形只有int类型这一种,但是python2.x除了int还有long。100123-89+898b.浮点型(float):包含python所有的小数(ps:python中的浮点型支持科学计数法)12.98-2389.9+297.9012e2 //1210^2 1200.012e-3 //1210^(-3) 0.012
(print(12e2)可以直接输出12e2的值)
c.布尔(bool):布尔类型的值只有两个,分别为True和False。
(ps:布尔值的首字母的大写的,且布尔值为关键字)
True对应1,False对应0。
d.复数(complex)
由实部和虚部组成的数字,即10+10j。
2.type(数值/变量):获取括号中数值的类型print(type(10j))
print(type(100))
[图片上传失败...(image-8feac2-1537960286164)]
(ps:直接使用type(数值/变量)不会在控制台显示数值类型,如果要在控制台显示,要使用print打印)
3.类型名():将其他的类型的数据转换成当前类型。
例:print(int(12.5))------12
print(bool(10))------True
print(float(100))------100.0
print(bool(100+100j)) //注意:复数不能转换成整形/浮点型
04-变量
1.什么是变量
声明变量,就是在内存中开辟空间存储数据。变量就是程序在内存中存储数据的容器。
2.怎么声明变量
C/Java声明变量: 类型 变量名 = 初值;
Python声明变量: 变量名 = 初值
格式:变量名 = 初值
说明:a.变量名:自己命名,要求是标识符,并且不能是关键字;所有字母必须小写,如果变量名是由多个单词组成,多个单词之间用下划线隔开(最好不要用类型名来做变量名,因为类型名由自己原有的意义,即一个类型,若是用其作为变量名,会使得类型名改变其原有的意义)。
b. = :(程序里的=不是等于符号,而是赋值符号,即将右边的值赋给左边的变量)
c.初值:有值的表达式。(具体的字面量、其他已经声明过的变量)
(文本用单引号包裹'',例如人名等)
asd = 100
student_name = '黎明'
3.声明完一个变量可以给变量重新赋值,重新赋值后,新的变量会覆盖变量中原来的值
在python中,同一个变量可以存储不同类型的值
student_name = '小红'
student_name = 1000
4.同时声明多个变量
a = b = c = 123print(a,b,c) //print同时打印多个信息用逗号,隔开。
c/java:先开辟其类型大小的空间,确定区域,作为变量名所在的区域,a是内存区域的名称,10是在内存中的内容。
int a = 10;
(4XA%J4GKD8.jpg)
python:先开辟空间,把初值存入,而后变量名再指向初值所在空间。如果改变初值,则会先开辟空间,在存入新的初值,变量名再指向新的空间,就得存储空间会被销毁。
a = 10;
[图片上传失败...(image-ad3911-1537960286164)]
new_name = student_name
//可以将声明过的变量赋值给新的变量
//变量只有在赋完值后才能使用(只有声明后才能使用)
05-运算符
python中运算符:数学运算符、比较运算符、逻辑运算符、赋值运算符、位运算
1.数学运算符:+,-,*,/,%,//, * *
a.+:求和,和数学中的+号功能一样。
print(100+10)print(-100+10)print(21.39+10.88)
b.-:求差,和数学中的-号功能一样。result = 99 - 87print(result)
c.*:求乘积,和数学中的x号功能一样。print(21.39 * 10.88)print(21 * 10.88)print(21 * 10)d. /:求商,和数学中的/号功能一样。注意:和C语言中的/不一样print(5/2) #2.5print(12.4/5) #2.48e.%:求余数print(5%2) #1print(6%2) #0print(5.5 % 0.3) #0.10000000000002(计算机的计算不能精确,一般不考虑浮点数的余数)
f.//(整除):求商,结果只取商的整数部分print(5//2) #2print(6.4//2) #3.0
g.**(幂运算):求次方(幂)
x ** y:求x的y次方 技巧:可以通过把Y的值设置成1/2(0.5)来求一个数的开平方print(23) #8print(6.42) #40.96000000000001(计算机的计算不精确)print(100-2) #0.0001print(1000.5) #10.0
2.比较运算符:>, =, <=
所有的比较运算的结果是布尔值:True/False==:判断左右两边的值是否相等。与=(赋值符号)有区别。=(赋值符号):将右边的值赋给左边的变量。
print(100<10) #Fprint(100>10) #Tprint(12.3 == 39) #Fnum = 10print(num == 100) #Fprint(num) #10print(num != 100) #T
3.逻辑运算符:and(与)、or(或)、not(非)
所有的逻辑运算符的结果都是布尔值:True/False。(注意:运算对象也必须是布尔值。)a. 格式为 :值1 and 值2:两个的值都为True,结果才是True。否则都是False。print(True and True) #Tprint(False and False) #Fprint(True and False) #Fprint(False and False) #F
(可以使用多个and)
注意:使用条件:要求多个条件同时满足的时候使用and连接
练习:是否获得奖学金,获得奖学金的条件是grade大于90,score大于3.5。grade = 88score = 3.6
a = grade > 90b = score > 3.5
print(a and b) #False
b. 值1 or 值2 :两个的值都为False,结果才为False。print(True or True) #Tprint(False or False) #Fprint(True or False) #Tprint(False or False) #T
(可以使用多个or)
练习:是否穿毛衣出门:温度低于20度,或者风速高于5级tem = 18wind_speed = 4
condition1 = tem < 20condition2 = wind_speed > 5
print(condition1 or condition2) #True注意:使用条件:要求一个条件满足的时候就可以使用or连接。
c.not 值: 值取反(True -> False; False -> True)print(not True )print(not False )
练习:条件:年龄不大于18age = 18print(age <= 18)print(not age > 18)否定某个条件的时候使用not
4.python中and和or会有短路现象
and的短路现象:值1 and 值2 -->一旦确定值1的值为False,就不会再去执行判断值2or的短路现象:值1 or 值2 -->一旦确定值1的值为True,就不会再去执行判断值2
5.赋值运算符:=,+=,-=,/=, %=, //=, **=
赋值运算符的左边必须是变量,赋值的时候是先算赋值符号右边的结果,然后再将结果赋值给左边的变量。result = 10 > 100print(result) #False ,先计算10>100的结果,再将结果赋值给result
a.=: 单纯的将=右边的值赋给左边num0 = 100b.+=, -=, /=, %=, //=, **=要求左边的变量本身必须是有值的变量1 += 值 --相当于-->变量1 = 变量1 + 值num1 = 10num1 += 10print(num1)
num2 = 10num2 *= 10print(num2)
6.运算符的优先级:
a.数学运算符>比较运算符>逻辑运算符>赋值运算符b.先计算优先级高的,如果优先级相等就从左往右依次运算。c.如果有括号,先算括号里面的d.数学运算中:** > *, /, %, // > +, -
print(100 > 200 - 50 * 3) #True,先算数学运算符得50,再算比较运算符,得Trueprint((100 > 200) - 50 * 3) #-150,即括号里为False,False=0,0-150=-150