Python小甲鱼学习笔记

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_41279876/article/details/102560466

小甲鱼视频学习

学习的捷径:验证例子、课后实践、善用搜索、放轻松。

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魔法方法

猜你喜欢

转载自blog.csdn.net/weixin_41279876/article/details/102560466
今日推荐