「python」快速入手

变量和类型

变量的作用是啥?

保存重要的临时变量,方便程序的编写

变量是啥?

在内存中一个内存区域(变量 =房间, 数据=人,内存=小区)

变量名的小细节 (同C一致)

  1. 必须是数字,字符,下划线组成
  2. 数字不可以开头
  3. 区分大小写
  4. python3 支持中文变量名

变量初始化 vs 赋值

a=10 #1
a=20 #2

这俩条语句的含义完全不同,1代表创建变量a , 2代表赋值,且在python可以不需要自己指定变量名,编译器自动推变量名

变量的类型

  1. 整形
  2. 字符型
  3. 浮点型
  4. 布尔值

整形

在python中直接一个int包含全部整形类型,且int式动态增长的,没有上限,默认4字节

字符型

直接就是字符串,类似C++中的STL的string or mysql中的varchar ,也是可变长的,默认1字节

浮点型

float的是双精度浮点数,存储方式按照IEE754,但是会有误差,默认字节8字节

布尔值

True,Flase ,同C++一致,True底层是数字1, False为0 ,且开头大写,默认1字节

tips

如何获取该变量的变量名?

type(变量名)

可以显示初始化吗?

a:int = 10 # 注意这里不是a为int他还是根据初始化的值进行自行推,这个语法纯粹是给人看的

变量赋值不同类型的值变量类型也会跟这改变俗称动态变量,则静态开始确定了就不会随着赋值改变
变量是没有类型的,但是他存储的数据有类型之分

a=10
type(a) #result:int
a=1.1
type(a)#result:str
a='hello'
type(a)#result:float
a=True
type(a)#result:bool


类型转换

类型( )
  1. 万物皆可转换字符串
  2. 别的需要和类型匹配才可以


字符串的格式化

在这里插入图片描述

此处的占位符可以和C中一样如%d,%s,%f



输入输出函数

print

print(表达式,你想输出的变量) 

input

input("提示语句")

默认input的返回值是一个字符类型,如果需要的是别的类型就需要类型转换

类型转换

a=类型(input("提示语句"))

tips

如C一样,python没有提供输入输出,他至少对底层的系统接口进行封装
在这里插入图片描述



操作符

算数

- , * ,%

同C或者数学一致

#俩值做差
a=3 - 2

# 俩值相乘
a=2 * 2 #result:4

#取模
a=3 % 2 #result:1 

+

可以用于计算,或者拼接字符串

 print(1 + 2) #result:3
 
a='hello '
b='world'
print(a + b) #hello world 

/

a=2 / 3 #result:0.6666666666666666

区分

和C语言等相比,python的除就是数学中的除直接就是小数,且无向上/下取整(四舍五入)

tips

/0会报错,类似数学分母不可以为0,或者说/0是没有意义

**

作用就是开方,或者还可以开根

a=2 ** 2 	 #2^2
2=2 ** 0.5 #2^0.5

//

地板除法,其实就是C语言中的 / ,且是向下取整(取较小数)

a=3 // 2  #result:1
a=-3 // 2 #result:-2

关系运算符

< , <= , > , >=

判断俩值直接的关系,其实就和C一致

a=10
b=20

print(a > b) # result:False
print(a < b) # result:True

print(a >= b) # result:False
print(a <= b) # result:True

== ,!=

他可以进行出浮点型外所有类型的判等,因为浮点数的存储的方式不同,会存在误差,而这里需要一毛一样才算相等,一般判等用做差和链式比较,当高精度运算时会四舍五入导致会有误差如0.9899-->到python 0.98980001会有误差

a=10
b=20
print(a == b) #result:False
print(a != b) #result:True

c='hello'
b='hello '
print(c == d) #result:False
print(c != d) #result:True

e=0.3
f=0.1+0.3
print(e == f) #result:False
print(e != f) #result:True
#判等的正确用法

print( -0.00001<e-f<0.00001) #result:True

tips

链式比较(数学值/定义域)

如图所示,python也可以这样:
在这里插入图片描述

a=10
print(0<a<20) #result:True

逻辑运算符

and

并且这就是C中的 &&,俩边为真就为真

a=1
b=2
c=3
print(b>a and b<c) #True
print(a< b <c) #True,等价且更加优

or

或者这就是C中的 ||,俩边其中一个为真就为真

a=1
b=2
c=3
print(a<b or a<c) #True

not

取反这就 C中的 !,真变假,假变真

print(not True) #False

tips

短路求值: 只要一边满足条件or不满足条件就不执行后面的语句

a的值是多少

a=0
print(False and a='hello') #result:0

print(True or a=True) #result:0

赋值运算符

=

就是把值给变量存起来

a=10

+ , - , * , / , % , ** , // =

其实本质就是把算数运算和赋值结合在一起,且根据优先级计算,先算数,在赋值

a=0
a += 1
a -= 1
a *= 1
a /= 1
a %= 1
a **= 1
a //= 1

tips

多元赋值

a=10
b=20
a,b=b,a #result:a=20, b=10

个人猜想:后面的值已经被另外存起来了寄存器吧,或者这样就是python的一个内置函数swap()

链式赋值
同C一致也和数学一致

a=b=10

前后 ++ ,–

在python中舍弃的这一个语法,但是可以写前置++但是意义不一样

a=1
++a #result:1
--a #result:1

位运算符

<< , >> , & , | ,~

  1. & 按位与
  2. | 按位或
  3. ~ 按取反
  4. << >> 左右移动

传送门之C语言运算符



基础语句

tips

python中的小细节

符合语句在C++中是用{}进行实现,而在python中用table或者4个空格来代替,优点逻辑层数少的时候更加易读,逻辑层数过多则不易读

顺序

就是从上到下依次执行,一条语句一条语句的执行

语句1
语句2
语句3
语句4
语句5
语句6 

#从上到下依次执行

条件

  1. if
  2. elif (else if )
  3. else
if 表达式 : 
	语句1
	语句2
elif 表达式 :
	语句1
	语句2
else
	语句1
	语句2

循环

while

while 表达式:
	#语句

for

for i in range(): #这里的i的是一个变量
	#语句
#for 循环就是按照定义来进行实现,直接确定来范围跌代的次数

range函数

有三参数,1:从哪里开始,2:从哪里结束,3:步长多少(可正可负)
且是一个左闭右开一个区间

tips

空语句,在C语言中 啥也不写在末尾➕ ; 代表是空,在

python中用pass表示空语句


函数

内建函数

  1. range:生成一个数字序列
# 且是一个左闭右开的区间
# return range类型

range(num)-->生成[0,n)的数字序列
range(begin,end,step)-->生成[begin,end)的数字序列
range(begin,end,step)--->生成[begin,end,step),step间隔的数字序列
  1. len: 统计容器的个数
len(容器)

自定义函数

def 函数名(参数列表):

这里def 其实就是define的缩写

形参 与 实参

  1. 形参是实参的一个临时拷贝
  2. 在python中不需要制定形参的类型,这就实现了泛型

缺省参数

有时候你会许会忘记传参or不知道给啥参数,这里就可以在实现函数的时候些一个缺省参数

def add (a=10 , b=10):
	print(a + b)

小细节

缺省参数一定要放在未缺省参数的后面,这个是语法规定,就类似低保,国家发福利开始一定是先扶贫的(贫农 和 普通人)

关键字参数

一般给函数传参是默认按照位置的,但是你也可以指定传参数

def  add(x , y)
	pass

add(10,20)
add(y=20,x=10) 

不定长参数(参数列表)

  • 参数个数没有限制
  1. 位置不定长(默认传递)

小细节

和默认位置参数混着中,一般关键参数在后面。
实用常见大致是别人和你说这个参数有啥用,有啥参数,但是你没有见过,那么你就可以中这种方法来进行调用

返回值

在C,C++中返回值一次只可以返回一个参数,返回多个参数一般用容器进行返回(本质也是返回一个),但是python支持多数据返回,利用了多元赋值

def fun()
	return 1,2,3,4

a, b, c, d = fun()

如果没有返回值可以不写,且返回值是None

作用域

依旧保持的是局部优先的规则,但是在python中还有一些小细节,应该python中都是动态变量,在python 中想要修改全局变量则需要先声明全局变量 global 声明

a = 10
def add()
	global a
	a += 1 

小细节

在该作用与下的所有局部变量,出作用域就会销毁,如果命名与全局的冲突局部优先,if,while,for 多的作用域的没有上述所说的功能



容器

  1. 在C/C++中容器创建好一次可以存相同类型的值,而在python中的容器则可以存任何值
  2. 在容器后面.函数在python中称他为方法

列表与元组

  1. 列表与元组 其实就是一个数组
  2. 俩基本一样,但是有区别(列表可以修改,元组是不可以修改的)

创建列表/元组

# 下面的方式都可以创建列表
a = []
a = list()

# 下面的方式创建元组
a = ()---> 一个数据的时候需加一个 , 来和函数区分 
a = tuple()

插入/删除数据 (仅列表)

  1. append (在列表最后插入一个元素)
  2. insert (在制定下标前插入一个元素)
  3. pop (根据下标删除元素)
  4. remove (根据值删除元素)
# 插入
a.append(1)
a.append('hello')
a.append(1.1)
a.insert(1, False)
b= [6, 3, 4 ]
a.insert(1, b)



# 删除
a.pop(a.index(1))#求index()是求下标下述介绍
a.remove(b)

tips

pop,remove 如果给的下标或者元素是不存在的会直接报错

查找/判断是否存在

  1. index (存在返回下标,不存在就报错)
  2. in 语句 (存在True,不存在False)
a = [1, 2, 3, 4]
print(a.index(1)) #print:1
print(1 in a) #print:True

遍历

  1. 类似范围for
  2. for循环
  3. while
for elem in a :
	print(elem)
for i in range(0,len(a)): # 在python中len也可以拿来算列表的长度等
	print(a[i]) #同样是用[]来访问数据
i=0
while i < len(a):
	print(a[i]) 


print(a) # 直接打印整个元素 or 列表

[] 下标运算符

C/C++ 中下标必须是正的,而python可以是负,表示倒数第几个元素
C/C++ 下标访问越界是抽查并不会报错(野指),而python会直接报错

tips

1范围for这种语法是不可以进行值的修改,因为是依次取值赋值给elem,其他事直接访问内存进行修改

拼接操作

  1. extend (拼接在调用方法列表的后面)
  2. +(拼接后生成一个新的列表)
  3. += (拼接在前列表的后面)

extend vs +=

他们都是吧后一个1列表附加到前一个列表的末尾,但是区别是啥呢?
+= 的效率低下,a += b --> a = a+b 需要行申请一块新内存放拼接后的列表,释放a的列表,如何赋值
extend则直接在末尾添加

切片操作

  • 作用:取一个范围内的数据
  • [begin : end] 前闭后开的区间
  • 第二个参数可以设置步长 默认为1,也可以为负数同上range()一样
# 正常操作
a = [1, 2, 3, 4, 5, 6]
print(a[0: 2]) # print:1,2

# 第二个参数

print(a[0: 3 , 2]) # print: 1,3
print(a[4:0 ,-1] # pirnt: 5,4,3,2
 

tips

[begin :] ,从begin 到结尾
[ : end] , 从 0 到 end-1 个元素

字典

其实就是 key , value的一个结构,STL中的map,与set 类似,但是python的底层实用哈希实现的,且key是唯一的,可以为任何不可以修改的值

创建

a = {
    
    }
a = dir()

插入/删除方式/查找
insert,append,pop,remove实用方法同上,这里要重要介绍的是 []:存在则返回key,, 既可以插入也可以查找

a = {
    
    }
a[1]=1
a[1]=2

# 着俩条语句含义非常之大,a[1]=1是插入,a[1]=2 是赋值
# a[1]=1--->查找字典中不存在则之间插入
# a[1]=2--->字典中存在则修改值

查看key,value,pair /遍历方式

  1. keys() (获得所有key)
  2. values() (获得所有value)
  3. items() (获得所有键值对)

方法

  1. get:获得对应key的value
d = {
    
    }
d.get(1)-->不存在则返回None
d.get(1,1)-->可以指定返回的数据


文件

文件的打开与关闭

open(name,mode,recoding)
close(name)

with open('python.txt','r')as f: 
	 f.readlines()
#with open 打开文件且会自动关闭文件

在这里插入图片描述

读取文件

read(num) 
readlines()
readline()

#每次读取文件都是按照文件指针读取,上次读过后指针会改变,下次读按照文件指针位置读取
#文件中的换行符也会被读取

在这里插入图片描述在这里插入图片描述

数据写入文件

wirte(数据)
flush() # 将内存中的数据刷新到文件(存储到存储介质)


异常

  • bug,操作不规范等导致程序崩溃 / 结果出错

处理异常/捕获异常

在这里插入图片描述

  1. 捕获全部异常
try:
	可能出现错误的代码
except:
#except Exceptiot as e:
	出错后执行的代码
  1. 捕获指定的异常
try:
	可能出现错误的代码
except 异常类型 as t:
	出错后执行的代码
异常类型:
t:出错后的异常信息
  1. 捕获多个异常
try:
	可能出现错误的代码
except (多个异常) as e :
	出错后执行的代码
  1. 没有异常
try:
	可能出现错误的代码
except:
	出错后执行的代码
else:
	没有异常后执行的代码
  1. 是否有异常都执行
try:
	可能出现错误的代码
except:
	出错后执行的代码
else:
	没有异常后执行的代码
finally:
	是否有异常都执行

异常的传递性

多层嵌套的代码如果上层没有处理的异常会一直能过到你调用函数那层…



模块

其实就是别人写好的代码,用的时候 import + 模块名导入

系统模块

sys.exit
退出一个程序

divmod

# 获得俩数的除数与余数

他人实现得模块

random.randint
获得一个随机的int值

time.sleep
延迟xx秒执行下面的语句

猜你喜欢

转载自blog.csdn.net/Legwhite/article/details/127753531