Python编程从入门到实践(第2版)个人学习笔记

这是本人学习Python编程从入门到实践(第2版)个人学习笔记,书本如下

目录

一、变量和简单数据类型

1.1字符串和数

1.1.1字符串部分方法的使用

1.1.2 f 字符串的用法

1.1.3删除空白

1.1.4数中的下划线

1.1.5同时给多个变量赋值

二、列表简介

2.1列表(list)

2.1.1概念引入

2.1.2访问列表元素

2.1.3查找某元素的下标(index方法)

2.2修改、添加和删除元素

2.2.1修改列表元素

2.2.2在列表中添加元素

2.2.3在列表中删除元素

2.3组织列表

2.3.1使用sort()方法对列表永久排序

2.3.2使用函数sorted() 对列表临时排序

2.3.3倒着打印列表

2.4操作列表

2.4.1遍历列表

2.4.2创建数值列表

2.4.4切片

2.4.5复制列表

2.5元组(tuple)

2.6集合 (set)

三、字典

3.1使用字典

3.1.1访问字典

3.1.2添加键值对

3.1.3修改字典的值

3.1.4删除键值对

3.1.5使用 get() 来访问值

3.1.6获取全部的key

3.2遍历字典

3.2.1遍历所有键值对

3.2.2遍历字典中的所有键

3.2.3遍历字典中的值

3.3嵌套

3.3.1字典列表

3.3.2在字典中存储列表

四、用户输入和while循环

4.1函数input

4.2while循环

4.2.1while简介

4.2.2使用while循环处理列表和字典

五、函数

5.1函数定义与调用

5.2函数返回值

5.2.1返回简单值

5.2.2返回字典

5.2.3传递列表

5.2.4在函数中修改列表

5.3传递任意数量的实参

5.3.1结合使用位置实参和任意数量实参

5.3.2使用任意数量的关键字实参

5.3函数作为参数传递和lambda 匿名函数

5.3.1函数作为参数

 5.3.2 lambda匿名函数

5.4将函数存储在模块中

5.4.1导入整个模块:

5.4.2导入特定的函数

5.4.3使用as给函数指定别名

5.4.4使用as给模块指定别名

六、类

6.1创建和使用类

6.1.1魔术方法__str__

6.1.2__lt__小于符号比较方法

 6.1.3__le__小于等于符号比较方法

 6.1.4__eq__等于符号比较方法 

6.2使用类和实例

6.2.1Car类

6.2.2给属性指定默认值

6.2.3修改属性的值

6.3继承

6.3.1子类的方法__init__()

6.3.2给子类定义属性和方法

6.3.3将实例用作属性

6.4导入类

6.4.1导入单个类

6.4.2在一个模块中存储多个类

6.4.3从一个模块中导入多个类

6.4.4导入整个模块

6.4.5导入模块的所有类

6.5类型注解

6.5.1变量的类型注释

6.5.2函数和方法类型注解

6.5.3Union联合类型注解



一、变量和简单数据类型

1.1字符串和数

1.1.1字符串部分方法的使用

注意:同元组一样,字符串是一个:无法修改的数据容器。

①方法title()以首字母大写的方式显示每个单词;方法upper()和方法lower()将字符改为全部大写或全部小写。

name = "ada loveace"
print(name.title())
print(name.upper())
print(name.lower())

运行结果为

Ada Loveace
ADA LOVEACE
ada loveace

 ②取特定字符的索引

name = "ada loveace"
print(name.index("l"))

运行结果:

4

 ③通过下标索引取值

name = "ada loveace"
print(name[2])

运行结果:

a

 ④字符串的分割

name = "ada loveace hello world"
temp = name.split(" ")
print(temp)

运行结果:

['ada', 'loveace', 'hello', 'world']

1.1.2 f 字符串的用法

在字符串中使用变量

first_name = "ada"
last_name = "lovelace"
fullname = f"{first_name} {last_name}"
print(fullname)

运行结果为

ada lovelace

f字符串的其他用法

first_name = "ada"
last_name = "lovelace"
fullname = f"{first_name} {last_name}"
print(f"Hello,{fullname.title()}!")

运行结果

Hello,Ada Lovelace!

1.1.3删除空白

rstrip()方法删除字符串末尾多余的空白;lstrip()方法删除字符串开头多余的空白;strip()方法删除字符串开头和末尾多余的空白(或指定值 );

favorite_language = '    Python '
print(favorite_language.strip())

运行结果

Python

1.1.4数中的下划线

favorite_num = 100_450_100
print(favorite_num)

运行结果

100450100

1.1.5同时给多个变量赋值

x, y, z = 1, 2, 0
print(f"{x} + {y}")

运行结果

1 + 2

二、列表简介

2.1列表(list)

2.1.1概念引入

在Python中,用方括号[]表示为列表,并用逗号分隔其中的元素。

bicycles = ['trek', 'cannondable', 'redline', 'specialized']
print(bicycles)

运行结果

['trek', 'cannondable', 'redline', 'specialized']

2.1.2访问列表元素

可采用索引的方式进行访问,索引是从0开始的,返回元素不包含方括号

bicycles = ['trek', 'cannondable', 'redline', 'specialized']
print(bicycles[1])
print(bicycles[-1])
print(bicycles[-2])
print(bicycles[1].title())

运行结果

cannondable
specialized
redline
Cannondable

2.1.3查找某元素的下标(index方法)

功能:查找指定元素在列表中的下标,如果找不到,报错ValueError

bicycles = ['trek', 'cannondable', 'redline', 'specialized']
index = bicycles.index('redline')
print(index)

运行结果

2

2.2修改、添加和删除元素

2.2.1修改列表元素

bicycles = ['trek', 'cannondable', 'redline', 'specialized']
bicycles[1] = 'hello'
print(bicycles)

运行结果

['trek', 'hello', 'redline', 'specialized']

2.2.2在列表中添加元素

在列表末尾添加单个元素

bicycles = ['trek', 'cannondable', 'redline', 'specialized']
bicycles.append('hello world')
print(bicycles)

运行结果

['trek', 'cannondable', 'redline', 'specialized', 'hello world']

在列表末尾添加多项元素

bicycles = ['trek', 'cannondable', 'redline', 'specialized']
car = ["audi", "BYD"]
bicycles.extend(car)
print(bicycles)

运行结果

['trek', 'cannondable', 'redline', 'specialized', 'audi', 'BYD']

在列表中插入元素

bicycles = ['trek', 'cannondable', 'redline', 'specialized']
bicycles.insert(1, 'hello')
print(bicycles)

运行结果

['trek', 'hello', 'cannondable', 'redline', 'specialized']

2.2.3在列表中删除元素

使用 del 语句删除元素

bicycles = ['trek', 'cannondable', 'redline', 'specialized']
del bicycles[0]
print(bicycles)

运行结果如下

['cannondable', 'redline', 'specialized']

使用 pop() 方法删除元素

方法pop() 删除列表末尾的元素,并让你能够接着使用它。

bicycles = ['trek', 'cannondable', 'redline', 'specialized']
pop_bicycles = bicycles.pop()
print(bicycles)
print(pop_bicycles)

运行结果

['trek', 'cannondable', 'redline']
specialized

使用pop()方法弹出列表中任何位置的元素

bicycles = ['trek', 'cannondable', 'redline', 'specialized']
pop_bicycles = bicycles.pop(2)
print(bicycles)
print(pop_bicycles)

运行结果

['trek', 'cannondable', 'specialized']
redline

当然,别忘了,当使用pop()时,被弹出的元素就不在列表中了。

根据值删除列表元素

如果只知道眼删除列表元素的值,可以用方法remove()

bicycles = ['trek', 'cannondable', 'redline', 'specialized']
bicycles.remove('redline')
print(bicycles)

运行结果

['trek', 'cannondable', 'specialized']

注意:方法 remove() 只删除第一个指定的值。

2.3组织列表

2.3.1使用sort()方法对列表永久排序

按字母顺序排列

cars = ['bwm', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)
cars.sort(reverse=True) # 字母反序
print(cars)

运行结果

['audi', 'bwm', 'subaru', 'toyota']
['toyota', 'subaru', 'bwm', 'audi']

2.3.2使用函数sorted() 对列表临时排序

cars = ['bwm', 'audi', 'toyota', 'subaru']
print('Here is the original list: ')
print(cars)
print('Here is the sorted list: ')
print(sorted(cars))
print('Here is the original list: ')
print(cars)

运行结果

Here is the original list: 
['bwm', 'audi', 'toyota', 'subaru']
Here is the sorted list: 
['audi', 'bwm', 'subaru', 'toyota']
Here is the original list: 
['bwm', 'audi', 'toyota', 'subaru']

2.3.3倒着打印列表

可使用方法 reverse() 反转列表元素的排列顺序

cars = ['bwm', 'audi', 'toyota', 'subaru']
print('Here is the original list: ')
print(cars)
print('Here is the reverse list: ')
cars.reverse()
print(cars)

运行结果

Here is the original list: 
['bwm', 'audi', 'toyota', 'subaru']
Here is the reverse list: 
['subaru', 'toyota', 'audi', 'bwm']

2.4操作列表

2.4.1遍历列表

采用for 循环遍历列表

cars = ['bwm', 'audi', 'toyota', 'subaru']
for car in cars:
    print(f'My favorite car is {car}')
print('END!')

运行结果

My favorite car is bwm
My favorite car is audi
My favorite car is toyota
My favorite car is subaru
END!

采用while循环遍历列表

bicycles = ['trek', 'cannondable', 'redline', 'specialized']
index = 0
while index < len(bicycles):
    print(bicycles[index])
    index += 1

运行结果:

trek
cannondable
redline
specialized

2.4.2创建数值列表

使用range() 函数

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

运行结果:

1
2
3
4

可见,并没有输出5。故 range(a, b) 函数中只会取值 [a, b)

使用range() 函数创建数字列表,并进行简单统计

# 默认步长为1
numbers1 = list(range(1, 5))
print(numbers1)
# 步长自定义
numbers2 = list(range(1, 10, 2))
print(numbers2)
print(min(numbers2))
print(max(numbers2))
print(sum(numbers2))

运行结果

[1, 2, 3, 4]
[1, 3, 5, 7, 9]
1
9
25

2.4.3列表解析

方括号中首先定义一个表达式,然后编写一个for 循环给表达式赋值

squares = [value**2 for value in range(1, 10)]
print(squares)

运行结果

[1, 4, 9, 16, 25, 36, 49, 64, 81]

2.4.4切片

切片示意

player = ['AAA', 'BBB', 'CCC', 'DDD', 'EEE']
print(player[1:4])
print(player[:4])
print(player[1:])
print(player[-2:])

运行结果

['BBB', 'CCC', 'DDD']
['AAA', 'BBB', 'CCC', 'DDD']
['BBB', 'CCC', 'DDD', 'EEE']
['DDD', 'EEE']

遍历切片

players = ['AAA', 'BBB', 'CCC', 'DDD', 'EEE']
for player in players[1:]:
    print(player)

运行结果

BBB
CCC
DDD
EEE

2.4.5复制列表

首先,让我们来看一下错误做法

# 将my_color列表复制给your_color列表的错误做法
my_color = ['red', 'yellow', 'blue']
your_color = my_color
print(your_color)

运行结果

['red', 'yellow', 'blue']

看起来好像没什么问题,我们对上述程序进行简单测试:

# 将my_color列表复制给your_color列表的错误做法
my_color = ['red', 'yellow', 'blue']
your_color = my_color
print(your_color)
# 对my_color列表进行简单修改,弹出列表最后一个元素
my_color.pop()
# 分别打印出my_color和your_color列表
print(my_color)
print(your_color)

运行结果如下,我们发现,对my_color列表进行修改,your_color列表也随之改变

['red', 'yellow', 'blue']
['red', 'yellow']
['red', 'yellow']

显然,对于your_color = my_color,是将my_color赋给your_color,而不是将my_color的副本赋给your_color。即原理如下所示,这两个变量指向同一个列表:


那如何正确进行列表的复制呢?可采用切片表示法[ : ]创建列表的副本

# 将my_color列表复制给your_color列表的正确做法
my_color = ['red', 'yellow', 'blue']
your_color = my_color[:]
print(your_color)
# 对my_color列表进行简单修改,弹出列表最后一个元素
my_color.pop()
# 分别打印出my_color和your_color列表
print(my_color)
print(your_color)

 打印输出结果如下

['red', 'yellow', 'blue']
['red', 'yellow']
['red', 'yellow', 'blue']

结果表明,对my_color列表进行修改,不影响your_color列表,这里是将my_color的副本赋给your_color。即原理如下所示,这两个变量分别指向两个列表:

2.5元组(tuple)

 Python将不能修改的值称为不可变的,而不可变的列表被称为元组。

定义元组,元组看起来很像列表,但使用圆括号而非中括号来标识。可以使用索引访问元组元素。

dimensions = (200, 50)
print(dimensions[1])
# 对元组重新赋值
dimensions = (300, 100)
print(dimensions[1])

运行结果

50
100

2.6集合 (set)

为什么需要学习集合这一类型,因为,列表可修改、支持重复元素有序;元组、字符串不可修改支持重复元素有序。如果场景需要对内容做去重处理,列表、元组、字符串就不方便了。而集合,最主要的特点就是不支持元素的重复,并且内容无序(顺序无法保证,不支持下标索引访问)定义空集合只能用set(),不可以用{},{}是定义空字典的。

# 定义集合
my_set = {"hello", "world", "audi", "BYD","hello", "world", "audi", "BYD"}
my_empty_set = set()        # 定义空集合
print(f"my_set的内容是:{my_set},类型是:{type(my_set)}")
print(f"my_set的内容是:{my_empty_set},类型是:{type(my_empty_set)}")

运行结果:

my_set的内容是:{'hello', 'BYD', 'world', 'audi'},类型是:<class 'set'>
my_set的内容是:set(),类型是:<class
  • 3
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值