小甲鱼视频学习
学习的捷径:验证例子、课后实践、善用搜索、放轻松。
ALT+N回到上一条语句
TAB进行缩进,缩进是灵魂
BIF是Build-in Functions,内置函数
py没有变量,只有名字
如果要在字符串中使用单引号或者双引号怎么办?
方法一:使用转义字符 *\\\\\\\\\\\\\\\\\\\\\\\\\*
输入文件路径时,可以对\进行转义,即\\
如果数量太多,使用r’
方法二:使用’ '和" "
使用print
打印,不包括单引号
使用random
模块可以产生随机数
转整型:使用int()
,python会使用截断处理。
转浮点型:使用float()
转字符串:使用str()
获得关于类型的信息:
方法1:type()
,与上面的转换函数配合使用
方法2:isinstance(a,b)
,判断两者类型是否相同,返回布尔值
科学计数法:e
查看文档的两种方法:
def addTwoNum(a1,a2):
'备注'
print(addTwoNum.__doc__)
help(addTwoNum)
常用的算术操作符:
+ - * / ** //
/
除法的结果默认是精确到小数点后的//
除法的结果默认是整数,余数可以通过%
得到**
是幂运算
常用的比较操作符:
> < >= <= == !=
常用的逻辑操作符:
and or not
py可以有效避免“悬挂else”,只要对齐就不会出现错误。
三元操作符语法:x if 条件 else y
断言:assert
,当条件为假,程序抛出异常。
for循环语法:
for 目标 in 表达式
循环体
range()语法:range([start,],stop[,step=1])
列表是打了激素的数组,包括整数、浮点数、字符串、对象等等。
创建一个普通列表:
memeber=['小甲鱼','小布丁','黑夜','迷途']
number=[1,2,3,4,5]
mix=[1,2,3,'嘻嘻',3.14,[1,2,3]]
empty=[]
向列表中添加元素的方法:
mix.append('我来了')
mix.extend(['哪吒','小青龙'])
mix.insert(0,'美国队长')
向列表中删除元素的方法:
mix.remove('美国队长') del mix[0]
del不是方法,是一条语句
pop()
列表分片(Slice)
利用索引值,每次我们从列表中获取一个元素,但是通过利用列表分片,我们一次性可以获取多个元素。
res=mix[1:2] ***左闭右开*** print(res)
列表常用的一些常用操作符:
比较操作符
逻辑操作符
连接操作符
重复操作符
成员关系操作符
列表的小伙伴们:
通过dir(list)
,查看常用的方法
查看某值出现的次数:
list3=[11,22,33,44,55]
print(list3.count(11))
查看某值的位置:
list3=[11,22,33,44,55]
print(list3.index(22))
用指定的方式对列表进行排序:
sort默认使用的是归并排序,sort有三个参数,前两个暂时不管,第三个参数是reverse,布尔类型,改正为true就为降序
list1=[2,3,4,6,5,1]
list1.sort()
print(list1)
升序
list1=[2,3,4,6,5,1]
list1.sort(reverse=True)
print(list1)
降序
py的变量是一个标签,用=即实现指针的功能,共享一块内存
用分片可以实现‘“真正的拷贝”’
元组:带上了枷锁的列表,用tuple
表示
元组在不使用()的情况下可以只用逗号隔开
元组和列表实在太像了。
元组的元素是不能被修改的。
元组的插入:
tuple1=(1,2,3,4,5,6)
tuple1=tuple1[:3]+(1,)+tuple1[3:]
print(tuple1)
字符串
字符串的一些特殊用法:
首字母变成大写:
str1='xiaoxie'
str1=str1.capitalize()
print(str1)
小甲鱼零基础入门python014期讲的非常详细
列表、元组、字符串的共同点:
- 都可以通过索引得到每一个字符
- 默认索引值总是从0开始
- 可以通过分片的方法得到一个范围内的元素的集合
- 有很多共同的操作符(重复操作符、拼接操作符、成员关系操作符)
函数
关键字参数
默认参数
收集参数
def test(*params):
print('参数的长度是:',len(params))
print('第二个参数是:',params[1])
test(1,'小甲鱼',3.14,5,6,7,8)
返回值:py是动态的确定类型
不要试图修改局部变量中的全局变量
如果硬要修改,使用global
关键字
lanbda表达式:
不用考虑申请和释放资源
为什么要使用lambda表达式:
- 省去定义函数的过程,使得代码更加精简
- 不需要考虑命名的问题
- 简化代码的可读性
递归:
方法1
def factorial(n):
result=n
for i in range(1,n):
result *=i
return result
num=int(input("请输入一个正整数:"))
print(factorial(num))
方法2
def factorial(n):
if n==1:
return 1
else:
return n*factorial(n-1)
num=int(input("请输入一个正整数:"))
print(factorial(num))
递归是非常耗费系统资源的,需要不断的入栈出栈。
好处是代码简洁精炼
兔子数列(又叫斐波那契数列)
迭代实现:
def fab(n):
n1=1
n2=1
n3=1
if n<1:
print("输入出错!")
return -1
while (n-2>0):
n3=n2+n1
n1=n2
n2=n3
n-=1
return n3
result = fab(20)
if result !=-1:
print("总共有%d只兔子诞生"%result)
递归实现:
def fab(n):
if n<1:
return -1
if n==1 or n==2:
return 1
else:
return fab(n-1)+fab(n-2)
result = fab(20)
if result !=-1:
print("总共有%d只兔子诞生"%result)
递归其实是分治思想
汉诺塔递归实现:
def hanoi(n,x,y,z):
if n==1:
print(x,'-->',z)
else:
hanoi(n-1,x,z,y)
print(x,'-->',z)
hanoi(n-1,y,x,z)
n=int(input("请输入汉诺塔的层数:"))
hanoi(n,'x','y','z')
字典是py中唯一的映射
字典的作用:
通过索引的方法:
brand=['李宁','耐克','阿迪达斯']
slogan=['一切皆有可能','just do it','impossible is nothing']
print(slogan[brand.index('李宁')])
字典方法:
dict1={'李宁':'一切皆有可能','耐克':'just do it','阿迪达斯':'nothing is impossible',}
print(dict1['李宁'])
产生字典
dict1={}
dict1=dict1.fromkeys(range(32),'赞')
print(dict1)
查询字典中每个键
for i in dict1.keys():
print(i)
判断是否有键
print(31 in dict1)
集合set:
集合的作用就是***唯一***
如何创建一个集合:
一种是直接把一堆元素用花括号括起来
另一种是使用set()工厂函数
frozenset
是不可变集合
文件
pickle
二进制文件
保存二进制文件:
import pickle
my_list=[123,3.14,'小甲鱼',['another list']]
pickle_file = open('my_list.pkl','wb')
pickle.dump(my_list,pickle_file)
pickle_file.close()
异常
Exception
常用的检测异常语句:
**try-exception方式**
try:
检测范围
except Exception[as reason].
出现异常(Exception)后的处理代码
try语句可以用,但是不推荐
try finally方式
finally语句的内容,最终都会被执行
图形用户界面:EasyGui
类和对象:
封装、继承、多态
py里面的self等于C++里面的this指针
py的私有是伪私有
继承:
class DerivedClassName(BaseClassName):
如果子类中定义与父类同名的方法或属性,则会自动覆盖父类对应的方法或属性。
import random as r
class Fish:
def __init__(self):
self.x=r.randint(0,10)
self.y = r.randint(0, 10)
def move(self):
self.x-=1
print("我的位置是:",self.x,self.y)
class Goldfish(Fish):
pass
class Carp(Fish):
pass
class Salmon(Fish):
pass
class Shark(Fish):
def __init__(self):
self.hungry=True
def eat(self):
if self.hungry:
print("吃货的梦想就是天天吃")
self.hungry=False
else:
print("太撑了")
使用super()
方法可以自动找到基类的方法。
横向的几个不相关的类放在一起,叫做组合。
纵向的就是继承。
类和对象一些相关的BIF:
issuclass(class,classiinfo)
用于判断一个类是不是另一个类的子类
class A:
pass
class B(A):
pass
a=issubclass(B,A)
print(a)
isinstance(class,classinfo)
检查一个实类对象是否是一个类的
hasattr(object,name) attr=attribute属性
检查对象是否有指定的属性
魔法方法
魔法方法总是被双下划线包围
魔法方法是面向对象的py的一切
魔法方法总在适当的时候被调用
init(self[,…])
制作一个简单的计时器:
小甲鱼视频044魔法方法