python学习笔记整理

目录

第一章 安装python

第二章 变量和简单的数据类型

1、变量的命名规则

2、字符串

2.1定义

字符串就是一系列的字符。在python中,用引号括起来的都是字符串,其中的引号可以是单引号,也可以双引号

2.2 使用方法修改字符串的大小写

(1).title()以首字母大写的方式显示每个单词
name='ada lovelace'
print(name.title)

结果如图:
在这里插入图片描述

(2).upper()将字符串全部大写
(3).lower()将字符串全部小写

2.3 合并(拼接)字符串:使用(+)来合并字符

2.4 删除空白:

(1).rstrip()删除字符串末尾的多余空白
(2).lstrip()删除字符串开头的多余空白
(3).strip()同时删除字符串开头和末尾多余的空白

3、数字:

在python中,可以对整数执行(+)加(-)减(*)乘(/)除(**)乘方运算

4、浮点数

5、使用str()避免类型错误

举例:

age=23
message="Happy"+age+"rd Brithday!"
print(message)

编译运行,出现错误
在这里插入图片描述
原因:这是一个类型错误,一位置python无法识别你使用的信息。在这个示例中,python发现了一个值为整数(int)的变量,但是它不知道如何解读这个值。python认为这是数值23,还是字符2和3?
为此可以调用str()函数

age=23
message="Happy"+str(age)+"rd Brithday!"
print(message)

编译运行
在这里插入图片描述

第三章 列表

3.1 列表是什么?

列表是一系列按特定顺序排列的元素组成。在python中,用方括号([])来表示列表,并用逗号分隔其中的元素。
bicycles=['trek','cannondale','redline','specialized']

3.1.1 访问列表元素

负数索引返回离列表末尾相应距离的元素

Lists=[1,2,3,5,5]
print(Lists[-3])

运行结果:
在这里插入图片描述

3.1.2 索引从0而不是1开始

3.1.3 使用列表中的各个值

3.2 修改、添加和删除元素

3.2.1 修改列表元素

bicycles=['trek','cannondale','redline','specialized']
bicycles[0]='duci'

3.2.2 在列表中添加元素

(1).append() 在列表的末尾添加元素
(2).insert( 位置,内容) 在列表中插入元素

3.2.3 从列表中删除元素

(1)del 语句删除元素
motorcycles=['sdjfhj','djfhj','djfhjk']
del motorcycles[0]
(2) pop() 删除元素

方法pop()可删除列表末尾的元素,并让你能够接着使用它。术语弹出源自这样的内比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素

motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
popped_motorcycle = motorcycles.pop()
print(motorcycles)
print(popped_motorcycle)

编译结果:
在这里插入图片描述

(3)pop(位置) 弹出列表中任意位置的元素

motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
popped_motorcycle = motorcycles.pop(0)
print(motorcycles)
print(popped_motorcycle)

编译运行:
在这里插入图片描述

(4)remove()根据值删除元素
motorcycles = ['honda', 'yamaha', 'suzuki','ducate']
print(motorcycles)
motorcycles.remove('ducate')
print(motorcycles)

编译运行:
在这里插入图片描述
使用remove()删除后的值也可以直接使用它的值

motorcycles = ['honda', 'yamaha', 'suzuki','ducate']
print(motorcycles)
too_expensive='ducate'
motorcycles.remove(too_expensive)
print(motorcycles)
message=too_expensive.title()+'is too expensive'
print(message)

编译运行:
在这里插入图片描述

3.3 组织列表

3.3.1 .sort()对列表进行永久排序

.sort(reverse=True)是对列表反方向排序

motorcycles = ['honda', 'yamaha', 'suzuki','ducate']
print(motorcycles)
motorcycles.sort()
print(motorcycles)
motorcycles.sort(reverse=True)
print(motorcycles)

运行结果
在这里插入图片描述

3.3.2 .sorted()对列表进行临时排序

3.3.3 .reverse()倒着打印列表

举例:

motorcycles = ['honda', 'yamaha', 'suzuki','ducate']
print(motorcycles)
motorcycles.reverse()
print(motorcycles)

运行结果:
在这里插入图片描述

3.3.4 len([列表名]) 确定列表的长度

print(len(motorcycles))

在这里插入图片描述

3.4 使用列表时避免索引错误

IndexError:list index out of range

第四章 操作列表

4.1 for循环遍历整个列表

在使用for循环的时候不要忘了冒号(:)

4.2 避免缩进错误

python时一中强缩进的语言,在编写过程中一定要注意缩进

4.3 创建数值列表

4.3.1 使用range()函数

for value in  range(1,5):
    print(value)

运行结果:
在这里插入图片描述

4.3.2 使用range()创建数字列表

numbers=list(range(1,5))
print(numbers)

运行结果
在这里插入图片描述

numbers=list(range(2,11,2))
print(numbers)

这里的range()函数表示从2开始,每次加2,直到11
在这里插入图片描述

squres=[]
for value in range(1,5):
    squre=value**2
    squres.append(squre)
print(squres)

运行结果:
在这里插入图片描述

4.3.3 对数字列表执行简单的统计计算

digits=[1,3,5,2,6,4,6,3,]
print('最大的数为:%d',max(digits))
print('最小的数为:%d',min(digits))
print('总和为   :%d',sum(digits))

在这里插入图片描述

4.3.4 列表解析

将for循环和创建新元素的代码和并成一行,并自动附加新元素

digits=[value**2 for value in range(1,11,2)]
print(digits)

运行结果:
在这里插入图片描述

4.4 使用列表的一部分

4.4.1 切片

切片最重要的就是指定开头和末尾

plays=['lindan','lizongwei','chenlong','chenjian','caiyun']
#打印出前三个运动员
print(plays[0:3])
#打印出1~4个运动员:
print(plays[1:4])
#由于未指定开头所以从头开始打印
print(plays[:3])
#由于未指定结尾,所以打印到结尾
print(plays[2:])

运行结果:
在这里插入图片描述

4.5 元组

列表是可以改变的,但是元组是不可以改变的

4.5.1 定义元组

使用圆括号()来标识

tuples=(1,2,3,4,5,6)

4.5.2 遍历元组中的所有值(参考列表)

第五章 if语句

第六章 字典

6.1 一个简单的字典

来看一个游戏,其中包含一些外星人,这些外星人的颜色和点数各不相同。下面是一个简单的字典,存储了有关特定外星人的信息:

aline_0={'color':'green','point':5}
print(aline_0)
print(aline_0['color'])
print(aline_0['point'])

运行结果为:
在这里插入图片描述
在python中,字典是一系列键—值对。每个键都与一个值相关联,你可以使用键来访问与之相关联的值。

6.2 使用字典

6.2.1 访问字典中的值

6.2.2 添加键—对值

aline_0={'color':'green','point':5}
print(aline_0)
aline_0['numbers']=15
aline_0['name']='TOM'
print(aline_0)

运行结果:
在这里插入图片描述
使用del 可以删除键—对值

6.3 遍历字典

6.3.1 使用for 和.items()遍历所有的键—对值

aline_0={'color':'green','point':5,'number':15,'name':'TOM'}
for key ,value in aline_0.items():
    print('\nkey:'+key)
    print('value:'+str(value))

运行结果:
在这里插入图片描述

6.3.2 使用.keys()遍历字典中所有的键

aline_0={'color':'green','point':5,'number':15,'name':'TOM'}
for k in aline_0.keys():
    print(k)

运行结果:
在这里插入图片描述

keys()方法实际上返回一个列表

6.3.3 使用.sorted()按 顺序遍历字典中所有键

字典总是明确的记录键和值之间的关联关系,但获取字典元素时,获取顺序时不可预测的

6.3.4使用.values() 遍历字典中的所有值

若涉及到重复的值,为了剔除重复项,可以使用集合(set)。集合类似于列表,但每个元素都必须时是独一无二的

favorite_languages={
    'Tom':'c',
    'Lili':'java',
    'Jury':'PHP',
    'Tim':'c'
}
for v in set(favorite_languages.values()):
    print(v)

运行结果:
在这里插入图片描述

6.4 嵌套

有时候需要将一系列字典储存在列表中,或者将列表作为值存储在字典中,这称之为嵌套

6.4.1 字典列表

#创建一个用于存储外星人的空列表
alines=[]
#创建30个绿色的外星人
for aline_numbers in range(0,30):
    new_aline={'color':'green','point':5,'speed':'slow'}
    alines.append(new_aline)
#显示前5个外星人
for aline in alines[:5]:
    print(aline)
print('----------------')

#显示创建了多少个外星人
print(len(alines))

运行结果:
在这里插入图片描述

6.4.2 在字典中存储列表

6.4.3 在字典中存储字典

第七章 用户输入和while循环

7.1函数input()的工作原理

函数input()是让程序暂停运行,等待用户输入一些文本。获取用户输入后,python将其存储在一个变量中,方便使用
使用input()函数是python默认将用户输入解读为字符串

name=input("please input your name:")
print('your name is:'+name)

运行结果:
在这里插入图片描述

7.1.2 使用int()函数来获取数值输入

7.2 while循环简介

7.2.1 使用while循环

7.2.2 让用户选择何时退出

7.2.3 使用标准

在更加复杂的程序中,很多不同的事件都会导致程序停止运行。
在要求很多条件都满足才能运行的程序中,可以定义一个变量,用于判断整个程序是否处于活动状态。这个变量被称为标志

active=True#定义标记
while active:
    message=input()
    if message=='quit':
        active=False
    else: print(message)

运行结果:
在这里插入图片描述

7.2.4 使用break退出循环

要立即推出while循环,不在运行循环中余下的代码,也不管条件测试的结果如何,可以使用break语句

7.2.5 在循环中使用continue

要返回循环的开头,并根据条件测试结果决定是否继续执行循环,可以使用continue语句,它不像break语句那样不再执行余下的代码并退出整个循环

7.3 使用while循环来拿处理列表和字典

7.3.1 在列表之间移动

假设有一个列表,其中包含新注册但还未验证的网站用户;验证这些用户后,如何将他们移到另一个已验证用户列表中呢?一种办法是使用一个while循环,在验证用户的同时将其从未验证用户列表中提取出来,再将其加入到另一个已验证用户列表中。代码可能类似于下面这样:

user_0={'name':'Tom','是否验证':'is'}
user_1={'name':'Jury','是否验证':'is'}
user_2={'name':'Tim','是否验证':'is'}
user_3={'name':'Dave','是否验证':'is'}
user_4={'name':'Lili','是否验证':'no'}
unconfirmed=[user_0,user_1,user_2,user_3,user_4]
confirmed=[]
while unconfirmed:
    current_user=unconfirmed.pop()

    if current_user['是否验证']=='is':
        confirmed.append(current_user)
        print(confirmed)

运行结果:
在这里插入图片描述

7.3.2 删除包含特定值的所有列表元素

pets=['dog','cat','cat','goldfish','cat','rabbit','pig']
while 'cat' in pets:
    pets.remove('cat')
print(pets)

运行结果:
在这里插入图片描述

7.3.3 使用用户输入来填充字典

polling_active =True
while polling_active:
    name=input('请输入你的姓名:')
    response=input('你将来想去攀登哪座山:')
    #将答案存储在字典中
    responess[name]=response
    #看看是否还有人要参与调查
    repeat=input('你还有其他要回答的问题么?(yes/no):')
    if repeat=='no':
        polling_active=False

print('\n---Poll Results----')
for name,response in responess.items():
    print(name+"would like to climb"+response+".")

运行结果:
在这里插入图片描述

第八章 函数

8.1 定义函数

8.1.1 向函数传递信息

8.1.2 实参和形参

8.2 传递实参

8.2.1 位置实参

最简单的关联方式就是基于实参的顺序,这种关联方式被称为位置实参==
1、调用函数多次
2、位置实参的顺序很重要

8.2.3 关键字实参

关键字实参就是传递给函数的名称-值对

def describe_pet(animal_type,pet_name):
    print('\n I have a '+animal_type)
    print("My "+animal_type+"'s name is "+pet_name)
describe_pet(animal_type='dog',pet_name='dahuang')
describe_pet(animal_type='cat',pet_name='xiaohua')

运行结果:
在这里插入图片描述

8.2.3 默认值

在编写函数时可以给每个形参指定默认值

8.3返回值

8.3.1 返回简单值

8.3.2 让实参变得可选

在python中,将非空字符串解读为True

def get_formatted_name(first_name,last_name,middle_name=''):
    if middle_name:
        print(first_name+' '+middle_name+' '+last_name)
    else:
        print(first_name+' '+last_name)
get_formatted_name('jimi','hendrix')
get_formatted_name('john','hooker','lee')

运行:
在这里插入图片描述

8.4 传递列表

8.4.1 在函数中修改列表

#首先创建一个列表,其中包含一些要打印的设计
unprintde_designs=['iphone case','robot pendant','dodecahedron']
completed_models=[]

#模拟打印每个设计,直到没有为打印的设计为止
while unprintde_designs:
    current_design=unprintde_designs.pop()
    #模拟根据设计制作3D打印模型的过程
    print('Printing model'+current_design)
    completed_models.append(current_design)

#显示打印好的所有模型
print("\nThe following models have been printed:")
for completed_model in completed_models:
    print(completed_model)

在这里插入图片描述
使用函数修改:

def print_models(unprinted_designs,completed_models):
    """
    模拟打印每个设计,直到没有未打印的设计为止
    打印每个设计后,都将其移到列表completed_models
    """
    while unprinted_designs:
        current_designs=unprinted_designs.pop()
        #模拟根据设计制作3D打印模型的过程
        print("Printing model: "+current_designs)
        completed_models.append(current_designs)

8.4.2 禁止函数修改列表
有时候,需要禁止函数修改列表。例如,假设像前一个示例那样,你有一个未打印的设计列表,并编写了一个将这些设计移到打印好的模型列表中的函数。你可能会做出这样的决定:即便打印所有设计后,也要保留原来的未打印的设计列表,以供备案。但由于你将所有的设计都移出了unprinted_designs,这个列表变成了空的,原来的列表没有了。为解决这个问题,可向函数传递列表的副本而不是原件;这`样函数所做的任何修改都只影响副本,而丝毫不影响原件。

function_name(list_name[:])

切片表示法[:]创建列表的副本。在print_models.py中,如果不想清空未打印的设列表,可像下面这样调用print_models():

print_models(unprinted_designs[:], completed_models) 

使用as 各函数指定别名

from pizza import make_pizza as mp
  mp(16,‘pepperoni’)
  mp(12,'mushrooms','green peppers','extra cheese')

使用as 给指定别名

第九章 类

9.1创建和使用类

9.1.1创建一个dog类

根据dog类创建的每个实例都将存储名字和年龄。我们赋予每条小狗蹲下(sit())和打滚(roll_over)的能力

class Dog():
    # 一次模拟小狗的简单尝试
    def __int__(self, name, age):
        """初始化属性name  和   age"""
        self.name = name
        self.age = age

    def sit(self):
        """模拟小狗杯命令坐下"""
        print(self.name.title()+"is now sit")

    def roll_over(self):
        """模拟小狗被命令时打滚"""
        print(self.name.title()+"roll_over")

我们定义了一个名为Dog 的类,根据约定,在python中,首字母的大写的名称为类
1、类中的函数称为方法,方法__init__() 是一个特殊的方法,每当你根据Dog类创建新实列时,python都会自动运行它。这个方法方法的名称中,开头和末尾各有两个下划线,这是一种约定,旨在避免python默认方法与普通方法发生名称冲突
2、我们将方法__init__()定义成了包含三个形参:self、name和age。在这个方法的定义中,形参self必不可少,还必须位于其他形参的前面。为何必须在方法定义中包含形参self呢?因为Python调用这个__init__()方法来创建Dog实例时,将自动传入实参self。每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。我们创建Dog实例时Python将调用Dog类的方法__init__()。我们将通过实参向Dog()传递名字和年龄;self会自动传递,因此我们不需要传递它。每当我们根据Dog类创建实例时,都只需给最后两个形参(name和age)提供值。
3、。以self为前缀的变量都可供类中的所有方法使用,我们还可以通过类的任何实例来访问这些变量。self.name = name获取存储在形参name中的值,并将其存储到变量name中,然后该变量被关联到当前创建的实例。self.age = age的作用与此类似。

9.1.2根据类创建实例

创建表示特定小狗的实例

my_dog = Dog("Dive",18)

print("my dog's name is" +" "+ my_dog.name.title())
print("my dog is" + " "+str(my_dog.age))

执行结果
在这里插入图片描述
1、访问属性
2、调用方法
3、创建多个实列

9.2 使用类和实例

9.3 继承

一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新的类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。

第十章 迭代器、生成器、装饰器、上下文管理器

https://www.cnblogs.com/wj-1314/p/8490822.html

10.1 生成器

参考文章

什么是生成器

通过列表生成式,我们可以直接创建一个列表,但是,受到内存限制,列表容量肯定是有限的,而且创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间,在Python中,这种一边循环一边计算的机制,称为生成器:generator
  
生成器是一个特殊的程序,可以被用作控制循环的迭代行为,python中生成器是迭代器的一种,使用yield返回值函数,每次调用yield会暂停,而可以使用next()函数和send()函数恢复生成器。

生成器类似于返回值为数组的一个函数,这个函数可以接受参数,可以被调用,但是,不同于一般的函数会一次性返回包括了所有数值的数组,生成器一次只能产生一个值,这样消耗的内存数量将大大减小,而且允许调用函数可以很快的处理前几个返回值,因此生成器看起来像是一个函数,但是表现得却像是迭代器

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值