0% found this document useful (0 votes)
16 views72 pages

Python 2

Uploaded by

2919856755
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views72 pages

Python 2

Uploaded by

2919856755
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd

Python 编程:从入门到实践

(第三版)

Teacher Name / Email


关于本讲义
• 与《 Python 编程:从入门到实践(第三版)》一书配套使用
• 讲义中的文本及绘图采用署名-非商业性使用-
相同方式共享协议(CC BY-NC-SA 4.0)进行许可
• 引用的网络图片附有超链接,可用于访问来源
• 讨论、意见、答疑、勘误、更新:
[Link]

作者: @Scruel Tao


第 2 章 变量和简单的数据类型
• 2.1 运行解释
• 2.2 变量
• 2.3 字符串
• 2.4 数
• 2.5 注释
• 2.6 Python 之禅
• 2.7 小结
2.1 运行解释
• 文件扩展名:结尾的 .py 用于
指出文件内容是 Python 代码
• Python 解释器:读取整个文件,
确定其中每一行的含义并执行
例如,当解释器看到 print ,就会
将括号中的内容打印到屏幕上。
• 语法高亮:用不同的颜色,区分
出程序代码中的不同部分
2.2 变量
修改我们在上一章中写的代码:

修改后的代码中:
添加了一个名为 message 的变量( variable ),指向的值为文本 "Hello Python
world!"

每个变量都指向一个值( value ),这个值与变量相关联


2.2 变量
输出仍然是一样的:
2.2 变量
再添加两行代码:

message = "Hello Python


Crash Course world!"
print(message)

运行程序
可以看到两行不一样的输出

我们可以在程序中随时修改变量的值, Python 将会始终记录最新值


2.2.1 变量:命名和使用
• 只能包含字母、数字和下划线,不能以数字开头

message

message1 message!

message_1 1message
2.2.1 变量:命名和使用
• 只能包含字母、数字和下划线,不能以数字开头
• 不能包含空格,用下划线来分隔单词

message_1

message 1
2.2.1 变量:命名和使用
• 只能包含字母、数字和下划线,不能以数字开头
• 不能包含空格,用下划线来分隔单词
• 变量名应使用既简短又具有描述性的英文单词,不建议用拼音

message xiaoxi

msg m
2.2.1 变量:命名和使用
• 只能包含字母、数字和下划线,不能以数字开头
• 不能包含空格,用下划线来分隔单词
• 变量名应使用既简短又具有描述性的英文单词,不建议用拼音
• 变量名区分大小写,命名普通的变量一般使用小写
• 慎用小写字母 l 和大写字母 O ,因为它们容易被人错看成数字
• Python 的关键字和函数名不能用作变量名(见附录 A.4 )

要养成良好的命名习惯
2.2.2 变量:避免命名错误
• 尽量避免拼写错误,容易产生错误,可以利用工具来自动检查
• 利用 VS Code 的提示和运行后展示的 Traceback 信息排错

名称错误
(NameError)
2.2.2 变量:避免命名错误
Be Nice :
不要害怕犯错,更不要因为错误显而易见,就对他人冷嘲热讽 ~
2.2.3 变量是标签
变量是用于存储值的盒子? 变量是可以被赋值的标签
(变量指向特定的值)

好像不太恰当 这个定义好得多!
2.3 字符串
字符串( string )就是一系列字符
• 在 Python 中,用英文引号引起的都是字符串
• 引号可以是双引号

"Hello Python world!"


2.3 字符串
字符串( string )就是一系列字符
• 在 Python 中,用英文引号引起的都是字符串
• 引号可以是双引号,也可以是单引号

'Hello Python world!'


2.3 字符串
字符串( string )就是一系列字符
• 在 Python 中,用英文引号引起的都是字符串
• 引号可以是双引号,也可以是单引号
• 还有一种特殊的写法,使用三个单引号

'''Hello Python world!'''


2.3 字符串
字符串( string )就是一系列字符
• 在 Python 中,用英文引号引起的都是字符串
• 引号可以是双引号,也可以是单引号
• 还有一种特殊的写法,使用三个单引号或三个双引号

"""Hello Python world!"""


2.3 字符串
字符串( string )就是一系列字符
• 在 Python 中,用英文引号引起的都是字符串
• 引号可以是双引号,也可以是单引号
• 还有一种特殊的写法,使用三个单引号或三个双引号
• 三个引号可以创建跨行字符串

"""Hello Python world!


Hello iTuring!"""
2.3 字符串
字符串( string )就是一系列字符
• 在 Python 中,用英文引号引起的都是字符串
• 引号可以是双引号,也可以是单引号
• 还有一种特殊的写法,使用三个单引号或三个双引号
• 三个引号可以创建跨行字符串,一个引号的写法则不能跨行

"Hello Python world!


Hello iTuring!"
2.3 字符串
Python 提供了一些途径,帮助我们修改字符串大小写:

"Ada Lovelace"
"ada lovelace"
"ADA LOVELACE"

"Ada Lovelace" "ada lovelace"


2.3.1 字符串:大小写修改
方法 / 函数( method/ name 后面的点号( dot )让
function ):
Python 对 name 变量执行指
Python 可对数据执行的操作。
定的操作。
name = "ada lovelace"
print([Link]())
2.3.1 字符串:大小写修改
方法 / 函数( method/ name 后面的点号( dot )让
function ):
Python 对 name 变量执行指
Python 可对数据执行的操作。
定的操作。
name = "ada lovelace"
print( [Link] ( ) ) 每个方法后面都跟着一对括号

都是英文括号哦!
2.3.1 字符串:大小写修改
方法 / 函数( method/ name 后面的点号( dot )让
function ):
Python 对 name 变量执行指
Python 可对数据执行的操作。
定的操作。
name = "ada lovelace"
print([Link]( )) 每个方法后面都跟着一对括号
括号内包含方法需要的额外信息

title 方法所需的额外信息
2.3.1 字符串:大小写修改
方法 / 函数( method/ name 后面的点号( dot )让
function ):
Python 对 name 变量执行指
Python 可对数据执行的操作。
定的操作。
name = "ada lovelace"
print([Link]( )) 每个方法后面都跟着一对括号
括号内包含方法需要的额外信息

print 函数所需的额外信息
2.3.1 字符串:大小写修改
方法 / 函数( method/
function ):
title() :以首字母大写的方
Python 可对数据执行的操作。
name = "ada lovelace" 式显示每个单词,这个方法没有
print([Link]()) 所需的额外信息,因此它后面的
括号内是空的。

"ada lovelace" Ada Lovelace


关于函数和方法
刚才遇到了两个关键词:
• 方法( method ) [Link]()
• 函数( function ) print()
关于函数和方法
刚才遇到了两个关键词: 它们的书写方式略有不同:
• 方法( method ) 变量名 . 方法名 (...)
• 函数( function ) 函数名 (...)

目前为止,我们还不用知道
它们之间的区别,但你可以
把方法视为特殊的函数。
关于函数和方法
刚才遇到了两个关键词: 如果你想要力求精确,可以在
• 方法( method ) Python 解释器中通过取掉函数
• 函数( function ) 后面的括号来执行代码,从而确
定函数是否应该被称为方法:

目前为止,我们还不用知道
它们之间的区别,但你可以
把方法视为特殊的函数。
2.3.1 字符串:大小写修改
• upper() :将字符串全部改为大写。

name = "Ada Lovelace"


print([Link]())

"Ada Lovelace" ADA LOVELACE


2.3.1 字符串:大小写修改
• upper() :将字符串全部改为大写。
• lower() :将字符串全部改为小写。

name = "Ada Lovelace"


print([Link]())

"Ada Lovelace" ada lovelace


2.3.1 字符串:大小写修改
• upper() :将字符串全部改为大写
• lower() :将字符串全部改为小写
• title() :每个单词的首字母大写

name = "ada lovelace"


print([Link]())
name = "Ada Lovelace"
print([Link]())
print([Link]())
2.3.2 字符串: f- 字符串
f 是 format 的简写
我们可以在 f- 字符串中,使用
花括号来引用代码中定义的变量

first_name = "ada"
last_name = "lovelace"
full_name = f"{first_name} {last_name}"
print(full_name)
message = f"Hello, {full_name.title()}!"
print(message)
2.3.3 字符串:添加空白
我们可以使用空格来添加空白:

print('Python Rust') Python Rust


2.3.3 字符串:添加空白
或使用特殊的字符来添加空白:
• \t :在字符串中表示制表符。

print('Python\tRust') Python Rust

比普通的空格要长一些
2.3.3 字符串:添加空白
或使用特殊的字符来添加空白:
• \t :在字符串中表示制表符。
• \n :在字符串中表示换行符。
Python
print('Python\nRust')
Rust
2.3.3 字符串:添加空白
• 直接使用空格
• \t :在字符串中表示制表符。
• \n :在字符串中表示换行符。

print('Python Rust')
print()
print('Python\tRust')
print()
print('Python\nRust')
2.3.4 字符串:删除空白
额外的空白可能令人迷惑,毕竟很难看出来有什么区别:

字符串空白?
Python 认得!
2.3.4 字符串:删除空白
可以使用以下方法来删除空白:
• lstrip() :移除左端的空白
• rstrip() :移除右端的空白
• strip() :移除两端的空白

' iTruing'.lstrip()
'iTruing '.rstrip()
' iTruing '.strip()
2.3.4 字符串:删除空白
可以使用以下方法来删除空白:
• lstrip() :移除左端的空白
• rstrip() :移除右端的空白
• strip() :移除两端的空白

'iTruing'
'iTruing'
'iTruing'
2.3.4 字符串:删除空白
可以使用以下方法来删除空白:
• lstrip() :移除左端的空白
• rstrip() :移除右端的空白
• strip() :移除两端的空白

' iTruing'.lstrip()
'iTruing '.rstrip()
' iTruing '.strip()
2.3.5 字符串:删除前缀
还有一个常见的字符串处理任务是删除前缀
比如我们有时需要删除网址的前缀 '[Link] 部分

'[Link]
2.3.5 字符串:删除前缀
还有一个常见的字符串处理任务是删除前缀
比如我们有时需要删除网址的前缀 '[Link] 部分

'[Link]'
2.3.5 字符串:删除前缀
还有一个常见的字符串处理任务是删除前缀
比如我们有时需要删除网址的前缀 '[Link] 部分

removeprefix() :移除字符串中指定的前缀

url = '[Link]
运行结果
url = [Link]('[Link]
[Link]
print(url)
2.3.6 字符串:避免语法错误
语法错误:包含非法的 Python 代码时发生的错误

例如,单引号和双引号的错误包裹,时常会引起语法错误:
message = 'Life's pathetic, let's pythonic.'
print(message)
运行结果
File "<stdin>", line 1
message = 'Life's pathetic, let's pythonic.'
^
SyntaxError: unterminated string literal (detected at line 1)
2.3.6 字符串:避免语法错误
语法错误:包含非法的 Python 代码时发生的错误

我们可以这样纠正:
message = "Life's pathetic, let's pythonic."
print(message)
运行结果
Life's pathetic, let's pythonic.
2.3.6 字符串:避免语法错误
语法错误:包含非法的 Python 代码时发生的错误(时常会遇
到)

• 解释器无法正确地确定字符串的结束位置,所以会给出错误
• 语法错误较难定位(不借助工具时)
• 利用编辑器的语法高亮
• 注意编辑器的错误提示
• 查看运行后的错误提示
• 参考书籍附录 C 的建议
字符串的简单拼接
除了使用 f- 字符串来生成字符串,我们还可以对字符串“做运
算” :
可以使用 + 号来拼接字符串:
"Hello" + " iTuring" "Hello iTuring"

还可以使用 * 号来生成重复的字符串:
"Hello " * 2 "Hello Hello "

当然, Python 也支持使用字符串变量来进行类似的操作


字符串的简单拼接

试着输出一下你的 Ohhhh!
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 1

1.5
• 浮点数( float ):带小数点的数
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 print(1)

print(1.5)
• 浮点数( float ):带小数点的数
运行结果
1
1.5
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 1000000

1000000.5
• 浮点数( float ):带小数点的数
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 1_000_000

1_000_000.5
• 浮点数( float ):带小数点的数

可在数中添加下划线使大数更易读
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 print(1000000)

print(1_000_000)
• 浮点数( float ):带小数点的数
print(1000000.5)
print(1_000_000.5)
可在数中添加下划线使大数更易读

运行结果
1000000
1000000
1000000.5
1000000.5
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 print(3 + 3)

print(2.5 + 2)
• 浮点数( float ):带小数点的数 print(1 + 2)
print(1.5 + 1.5)
数的基本运算:
运行结果
加( + ) 6
4.5
3
3.0
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 print(3 - 3)

print(2.5 - 2)
• 浮点数( float ):带小数点的数 print(1 - 2)
print(1.5 - 1.5)
数的基本运算:
运行结果
加( + )减( - ) 0
0.5
-1
0.0
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 print(3 * 3)

print(2.5 * 2)
• 浮点数( float ):带小数点的数 print(1 * 2)
print(1.5 * 1.5)
数的基本运算:
运行结果
加( + )减( - )乘( * ) 9
5.0
2
2.25
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 print(3 / 3)

print(2.5 / 2)
• 浮点数( float ):带小数点的数 print(1 / 2)
print(1.5 / 1.5)
数的基本运算:
运行结果
加( + )减( - )乘( * )除( / ) 1.0
1.25
0.5
1.0
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 print(3 // 3)

print(2.5 // 2)
• 浮点数( float ):带小数点的数 print(1 // 2)
print(1.5 //
1.5)
数的基本运算:
运行结果
加( + )减( - )乘( * )除( / ) 1
双斜杠( // ):表示整数除法 1.0
0
1.0
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 print(3 ** 3)

print(2.5 ** 2)
• 浮点数( float ):带小数点的数 print(1 ** 2)
print(1.5 **
1.5)
数的基本运算:
运行结果
加( + )减( - )乘( * )除( / ) 27
双斜杠( // ):表示整数除法 6.25
双乘号( ** ):表示乘方运算 1
1.8371173070873836
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 print(3 ** 3)

print(2.5 ** 2)
• 浮点数( float ):带小数点的数 print(1 ** 2)
print(1.5 **
1.5)
数的基本运算:
运行结果
加( + )减( - )乘( * )除( / ) 27
双斜杠( // ):表示整数除法 6.25
双乘号( ** ):表示乘方运算 1
1.8371173070873836
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 print(3 ** 3)

print(2.5 ** 2)
• 浮点数( float ):带小数点的数 print(1 ** 2)
print(1.5 **
1.5)
数的基本运算:
运行结果
加( + )减( - )乘( * )除( / ) 27
双斜杠( // ):表示整数除法 6.25
双乘号( ** ):表示乘方运算 1
1.8371173070873836
2.4 补充:布尔值( Boolean )
用于表示逻辑真或假 print(True)
• True : 表示真 print(False)
• False :表示假
运行结果
True
False
2.4 同时给多个变量赋值
Python 支持在一行代码中给多
个变量赋值:

x, y, z = 0, 0, 0

上面的代码中,我们将
x 、 y 、 z 都初始化为了零。
书写的顺序就是分配的顺序
2.4 常量( constant )
常量:程序内一直保持不变的变量
Python 没有内置的常量支持,我们给出的是一个约定俗成的惯例

• 习惯使用全大写字母(单词由下划线分割)来指出将某个变量视
为常量
• 请不要在程序中修改任何常量!

MAX_CONNECTIONS = 5000
2.5 注释( Comment )
注释:让你能够使用自然语言在
程序中添加说明
• Python 中使用( # )标识注

• 解释器会忽略注释的内容
# 向大家问好
print("Hello Python
people!")
2.5 注释( Comment )
注释:让你能够使用自然语言在
程序中添加说明
• Python 中使用( # )标识注

• 解释器会忽略注释的内容
# 向大家问好
# print("Hello Python people!")
2.5 该编写什么样的注释
2.5 该编写什么样的注释
• 阐述代码的目的
• 阐述难懂的细节
• 要力求清晰简洁
• 便于个人回忆和团队合作

• 避免添加没必要的注释
• 不要怕麻烦而不写注释
2.6 Python 之禅
Python 社区的理念(由 Tim Peters 撰写)
>>> import this
• Beautiful is better than ugly. The Zen of Python, by Tim Peters
• Simple is better than complex.
• Complex is better than complicated.
• Readability counts.
• There should be one -- and preferably only one --
obvious way to do it.
• Now is better than never.
2.7 小结
• 学习了如何使用变量,如何创建描述性变量名,以及如何消除名
称错误和语法错误
• 学习了字符串是什么,以及如何调整字符串的显示方式,使用空
白来显示整洁的输出,还学习了如何删除字符串中多余的字符。
• 学习了如何使用整数和浮点数,了解了一些使用数值数据的方式。
• 学习了如何编写说明性注释,了解了让代码尽可能简单的理念

在下一章中,我们将学习关于列表的相关知识。
课后拓展
• 学习并使用用于获取帮助信息的内置函数 help()
• 了解如何养成良好的编码习惯
• 了解什么是转义字符,利用它解决 2.3.6 节中出现的错误
• 完成书中习题,粗略地浏览一下 Python 之禅中的其他指导原则

可选拓展
• 学习用于获取变量类型的内置函数 type()
• 了解数值运算的运算优先级及括号的用法
• 了解位运算以及其他的数类型
• 了解精度丢失及其原因

You might also like