python学习系列
本系列来源于B站视频。UP主为IT搬運工,系列视频为[小甲鱼]零基础入门学习python。点我直达
应用范围
操作系统、web、3D动画、企业运用、云计算。
学到什么
- python3的所有常用语法
- 面向对象编程思维
- 运用模块编程
- 游戏编程
- 计算机仿真
python安装
从IDLE启动python
IDLE是Python Shell。键入文本和程序进行交互。
>>> print("I love Python")
I love Python
>>> 5+3
8
>>> 51321*5
256605
>>> 5336*53**53
129968141808561191938900508391278815366894505894666579546279378373421381170425591535502818390328
>>> 532/8
66.5
>>> 1/3333
0.00030003000300030005
>>> 9876543210123456789*1234567890987654321
12193263121170553265523548251112635269
>>> 222222
222222
>>> 3462235*5//
SyntaxError: invalid syntax
>>> 3462235*5/5
3462235.0
>>> print("I love Python\n" * 8)
I love Python
I love Python
I love Python
I love Python
I love Python
I love Python
I love Python
I love Python
>>> print("I love Python\n" + 8)
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
print("I love Python\n" + 8)
TypeE
temp = input("猜数字")
guess = int(temp)
if(guess == 8)
print("right")
else
print("error");
BIF
Bulit-in function内置函数
dir(__builtins__) #查看所有内置函数
help(input) # 查看内置函数的帮助
变量和字符串
变量
Python并不是把值存储在变量中,而更像是把名字贴在值的上方??
- 使用变量之前需要先进行赋值
- 变量名可以包括字母、数字、下划线,但变量名不能以数字开头
- 变量名区分大小写
- 等号赋值,左边是名字,右边是值
字符串
创建字符串需要在字符两边加上引号,可以是单引号或者双引号,但前后必须一致。
字符串中出现双引号或者单引号:
加转义字符\
'Let\'s go'
>>> str='C:\now'
>>> print(str)
C:
ow
\n代表换行,可以用\对、进行转义
str='C:\\now'
print(str)
C:\now
原始字符串,在前面加上r即可
str=r'C:\now'
跨越多行的字符串,三引号
str='''1
2
3
4
'''
条件分支
if 条件 :
条件为真执行的操作
else 条件 :
条件为假执行的操作
while循环
while 条件:
条件为真执行的操作
and 逻辑操作符
and可以将任意表达式连接在一起,并得到一个布尔类型的值
左边和右边都正确的话,才正确,有一个不对就不对
1>2 and 3>2 #错误
2>1 and 3>2 #正确
random模块,产生随机数
其中一个randint函数返回随机整数
import random
sercet = random.randint(1,10) #返回一个1到10的随机整数
print(sercet)
数据类型
数值类型
整形、布尔、浮点、e记法
类型转换
int()
float()
str()
获取关于类型的信息
type() #返回类型
isinstance() #两个参数,如果两个参数类型相等返回true,否则返回false
常用操作符
算数操作符
+ - * /(算出为精准值3/2 = 1.5) % **(幂运算 3**2 和3*3一样 和计算器中^符号相同) //(3//2 得1) += -= *= /=
比较操作符
>= <= == != > < 返回true或者false
逻辑操作符
and # 与
or #或
not #非
优先级问题
如果是个正常上过小学的,和你普通认知一样
分支和循环
if 条件
操作#
elif 条件
操作#
else
操作#
while 条件
操作#
for
三元操作符
small = x if x<y else y
断言
assert 该关键字后面为假时直接崩溃
for循环
name = 'moliam'
for i in name:
print(i,end='\n')
m
o
l
i
a
m
range()
range([start,],stop[,step = 1])
该BIF有三个参数,[]括起来的标识可选,不传
step=1标识低三个参数的默认值为1
该BIF作用是生成一个从start参数的值开始到stop参数的值结束的数字序列,
会重新进行赋值,即使循环中已经改变了循环变量的值
代码:
for i in range(10):
if i%2 != 0:
print(i)
continue
i+=2 #下一次循环被直接修正,只在此次循环有用
print(i)
结果
2
1
4
3
6
5
8
7
10
9
break continue
break直接结束循环
continue,跳出本次循环,进行下一轮循环
列表
普通列表、混合列表、空列表
添加元素
append() #添加元素
extend() #添加多个元素,使用列表
insert() #在固定位置添加元素
删除元素
remove()
del
pop()
列表分片
member[1:3]
其他方法
count() # 成员数目
index() # 成员位置
reverse() # 成员逆序
sort() # 成员排序,默认从小到大
元组
在使用上和列表相似
列表:可以随意修改列表中的元素,使用的为中括号
元组:元组是不可改变的,类似于const,使用的为小括号,但是必须有逗号
tuple1 = (1,2,3)
tuple2 = (1) # int
tuple3 = (1,) # tuple
字符串
capitalize() #将字符串的第一个字符改为大写
casefold() #将整个字符串的所有字符改为小写
center(width) #字符串居中,并用空格填充长度width的新字符串
count(sub[,start[,end]]) #查找出现字符的数目
join(sub)
format #格式化
>>>"{0} love{1}".format("I"," moliam")
'I love moliam'
>>> "{a} love{b}".format(a="I",b=" moliam")
'I love moliam'
>>> "{{a}}".format("不打印") #转义
'{a}'
>>> "{0:.1f}{1}".format(3.1415," == pi") #格式输出
'3.1 == pi'
>>> '%c %c %c' %(97,98,99) #元组
'a b c'
序列
list() #将一个可迭代对象转换为列表
>>> a='moliam'
>>> a=list(a)
>>> a
['m', 'o', 'l', 'i', 'a', 'm']
tuple() #将一个可迭代对象转换为元组
str() #将参数转化为字符串
len() #返回长度
max() #返回最大值
min() #返回最小值
sum() #求和
sorted() #排序
函数
def Myfirstfunction():
print("moliam")
Myfirstfunction()
def Myfirstfunction(name):
'函数定义过程中的name是形参'
print(name)
>>> Myfirstfunction("moliam")
moliam
>>> Myfirstfunction.__doc__
'函数定义过程中的name是形参'
#收集参数
>>> def test(*para):
print("%d" %(len(para)));
print("第二个参数是",para[1]);
>>> test(1,2,3,4)
4
第二个参数是 2
过程
局部变量、全局变量
global #在函数中使用全局变量
函数嵌套
>>> def fun1():
print("1")
def fun2():
print("2")
fun2()
>>> fun1
<function fun1 at 0x00000218DFAA3708>
>>> fun1()
1
2
>>> # fun2只能在fun1中调用
闭包
>>> def fun3(x):
def fun4(y):
return x+y
return fun4
>>> fun3(2)(3)
5
nonlocal #声明非局部变量
lambda
>>> g = lambda x:2*x+1
>>> g(5)
11
# 匿名函数,使用该关键字创建一个匿名函数
# 用于只需要调用一两次的函数,可使得代码更加精简
filter()
>>> def odd(x): #偶数
return x%2
>>> temp = range(10) #0-9 10个数字
>>> list(filter(odd,temp)) #过滤掉0-9中的偶数
[1, 3, 5, 7, 9]
>>> list(filter(lambda x:x%2,range(10)))
[1, 3, 5, 7, 9]
map()
>>> list(map(lambda x:x*2,range(10)))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
字典
>>> dirct = {'1':1,'2':2}
>>> print("%d" % dirct['1']);
1
get()
clear()
keys()
values()
items()
集合
>>> num = {1,2,3,4,5}
>>> num
{1, 2, 3, 4, 5}
>>> num2 = {1,2,3,4,5,4,3,2,1}
>>> num2
{1, 2, 3, 4, 5} #唯一
>>> num3 = frozenset([1,2,3,4,5]) #类似于const声明,不可变集合
>>> num3.add(0)
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
num3.add(0)
AttributeError: 'frozenset' object has no attribute 'add'
模块
# os模块 os.path模块 time模块
>>> import os
>>> os.getcwd()
'F:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Python37_64'
os.chdir(path) #改变工作目录
#更多模块函数请百度
pickle() #模块
#amazing
#将数据转为二进制
#存放:pickling
#读取:unpickling
>>> import pickle
>>> mylist = [12,3.14,"moliam"]
>>> pickle_file = open('mylist.pkl','wb') #需要管理员运行
>>> pickle.dump(mylist,pickle_file)
>>> pickle_file.close()
#不要随便以wb的方式打开你电脑上的文件,我用自己电脑上的一个文件进行测试,然后里面的东西全清了,自己给自己挖坑,因为w是直接从文件开头进行写,追加写的话不能用w
python异常
python标准异常
根据提示可知是什么问题
try
try: #检测范围
except Exception[as reason]:
#出现异常后的处理代码
finally:
#无论如何都会执行的代码
>>> raise TypeError #对异常进行解释
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
raise TypeError
TypeError
丰富的else
#当在for while循环中,没有遇到break,且else与for while对齐,则在执行循环完毕后,执行else
def show(num):
count = num // 2
while count > 1:
if num%count == 0 :
print('最大约数为 %d' %(count))
break
count -= 1
else:
print('%d 为素数' %(num))
num = int(input("输入一个数字:\r\n"))
show(num)
#try语句如果没有错误,也可以使用else进行处理
try:
int('abc') #int('123')
except ValueError as reason:
print ("错误原因 %s" %(reason))
else:
print("没有错误")
with语句
#会自动关注with后面的语句,进行有可能的对应操作
#例如后面如果是open 则当该文件未被引用之后则会自动调用close
对象
对象=属性+方法
class Turtle: #类名约定以大写字母开头
面向对象编程
self #对象竟是我自己
__init__() #应该类似于C++中的构造函数
#公有,私有
#前加两个下划线就变成私有了 __name _类名__函数名
继承
class 子类(父类) #子类可以继承父类的任何属性和方法
super().__init__() #子类有父类相同的函数名时会被覆盖,可使用super进行对覆盖函数的调用
多重继承
class 子类(父类1,父类2,...)
构造和析构
__new__()
__init__()
__del__()
算术运算
迭代器
生成器
封装
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!