第2章 变量和简单数据类型
本章目标:学习使用变量、字符串、数字以及注释,理解 Python 数据类型基础。
2.1 运行 hello_world.py 时发生的情况
python
print("Hello Python world!")
.py扩展名告诉编辑器这是一个 Python 程序- Python 解释器读取整个程序,逐行确定每个单词的含义
- 编辑器的语法突出 功能用不同颜色区分代码不同部分(如
print显示为蓝色,字符串显示为橙色)
2.2 变量
python
message = "Hello Python world!"
print(message)
变量可以随时修改,Python 始终记录最新值:
python
message = "Hello Python world!"
print(message)
message = "Hello Python Crash Course world!"
print(message)
输出:
Hello Python world!
Hello Python Crash Course world!
2.2.1 变量的命名和使用
| 规则 | 说明 |
|---|---|
| 只能包含字母、数字、下划线 | 不能以数字开头,如 1_message 非法 |
| 不能包含空格 | 用下划线分隔单词,如 greeting_message |
| 不能使用Python 关键字和函数名 | 如 print、for、if 等(见附录 A.4) |
| 简短且有描述性 | name > n,student_name > s_n |
| 慎用小写 l 和大写 O | 容易与数字 1 和 0 混淆 |
| 全小写 | 当前阶段建议变量名全部使用小写 |
2.2.2 使用变量时避免命名错误
python
# ❌ 拼写错误 ------ NameError
message = "Hello Python Crash Course reader!"
print(mesage) # 拼写少了个 s
出现的 traceback:
Traceback (most recent call last):
File "hello_world.py", line 2, in <module>
print(mesage)
NameError: name 'mesage' is not defined
NameError 的两种常见原因:
- 使用变量前忘记赋值
- 变量名拼写不正确
2.3 字符串
字符串就是一系列字符,用引号括起的都是字符串。
python
"This is a string."
'This is also a string.'
单引号和双引号可灵活使用,方便在字符串中包含引号和撇号:
python
'I told my friend, "Python is my favorite language!"'
"The language 'Python' is named after Monty Python, not the snake."
"One of Python's strengths is its diverse and supportive community."
2.3.1 使用方法修改字符串的大小写
.title() --- 每个单词首字母大写
python
name = "ada lovelace"
print(name.title()) # Ada Lovelace
.upper() 和 .lower() --- 全部大写 / 全部小写
python
name = "Ada Lovelace"
print(name.upper()) # ADA LOVELACE
print(name.lower()) # ada lovelace
lower()在存储用户输入时很常用:先转换为小写再存储,显示时再转换为合适的大小写。
2.3.2 合并(拼接)字符串
用 + 拼接字符串:
python
first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name
print(full_name) # ada lovelace
# 拼接 + title() 结合使用
print("Hello, " + full_name.title() + "!") # Hello, Ada Lovelace!
# 将整条消息存入变量
message = "Hello, " + full_name.title() + "!"
print(message)
2.3.3 使用制表符或换行符来添加空白
| 转义符 | 效果 |
|---|---|
\t |
制表符(缩进) |
\n |
换行符 |
\n\t |
换行 + 缩进 |
python
>>> print("Python")
Python
>>> print("\tPython")
Python
>>> print("Languages:\nPython\nC\nJavaScript")
Languages:
Python
C
JavaScript
>>> print("Languages:\n\tPython\n\tC\n\tJavaScript")
Languages:
Python
C
JavaScript
2.3.4 删除空白
| 方法 | 效果 |
|---|---|
rstrip() |
删除字符串末尾的空白 |
lstrip() |
删除字符串开头的空白 |
strip() |
删除字符串两端的空白 |
python
# rstrip() --- 临时删除
>>> favorite_language = 'python '
>>> favorite_language
'python '
>>> favorite_language.rstrip()
'python'
>>> favorite_language
'python ' # 注意:原变量未改变
# rstrip() --- 永久删除(赋值回原变量)
>>> favorite_language = 'python '
>>> favorite_language = favorite_language.rstrip()
>>> favorite_language
'python'
# lstrip() 和 strip()
>>> favorite_language = ' python '
>>> favorite_language.rstrip()
' python'
>>> favorite_language.lstrip()
'python '
>>> favorite_language.strip()
'python'
实际应用中,这些方法常用于清理用户输入数据。
2.3.5 使用字符串时避免语法错误
撇号引发的问题:在单引号字符串中包含撇号会导致语法错误。
✅ 正确做法(用双引号括字符串):
python
message = "One of Python's strengths is its diverse community."
print(message)
❌ 错误做法(单引号中的撇号被误认为字符串结束):
python
message = 'One of Python's strengths is its diverse community.' # ❌
出现的错误:
File "apostrophe.py", line 1
message = 'One of Python's strengths is its diverse community.'
^
SyntaxError: invalid syntax
编辑器的语法突出功能可帮助你快速发现引号不匹配的问题。
2.3.6 Python 2 中的 print 语句
python
# Python 2 中 print 是语句,不需要括号
>>> print "Hello Python 2.7 world!"
Hello Python 2.7 world!
Python 3 中 print 是函数,括号必不可少。
2.4 数字
2.4.1 整数
| 运算符 | 说明 | 示例 |
|---|---|---|
+ |
加 | 2 + 3 → 5 |
- |
减 | 3 - 2 → 1 |
* |
乘 | 2 * 3 → 6 |
/ |
除 | 3 / 2 → 1.5 |
** |
乘方 | 3 ** 2 → 9 |
运算次序:支持括号修改优先级
python
>>> 2 + 3 * 4
14
>>> (2 + 3) * 4
20
2.4.2 浮点数
python
>>> 0.1 + 0.1
0.2
>>> 2 * 0.1
0.2
⚠️ 注意:浮点数精度问题(所有编程语言都存在):
python
>>> 0.2 + 0.1
0.30000000000000004
>>> 3 * 0.1
0.30000000000000004
暂时忽略多余的小数位数,第二部分项目中将学习处理方法。
2.4.3 使用函数 str() 避免类型错误
python
# ❌ TypeError: 不能直接将整数拼接到字符串
age = 23
message = "Happy " + age + "rd Birthday!" # 报错
print(message)
错误信息:
TypeError: Can't convert 'int' object to str implicitly
✅ 正确做法 --- 用 str() 将整数转换为字符串:
python
age = 23
message = "Happy " + str(age) + "rd Birthday!"
print(message) # Happy 23rd Birthday!
2.4.4 Python 2 中的整数
python
# Python 2 中整数除法的结果为整数(截断小数)
>>> 3 / 2
1
# 确保至少一个操作数为浮点数
>>> 3.0 / 2
1.5
2.5 注释
2.5.1 如何编写注释
用 # 标识,# 后面的内容被 Python 解释器忽略:
python
# 向大家问好
print("Hello Python people!")
2.5.2 该编写什么样的注释
- 阐述代码做什么 以及如何做的
- 团队协作时注释尤为重要
- 不确定是否要写注释时,先写了再说(删注释比加注释容易)
2.6 Python 之禅
在终端执行 import this 即可查看完整内容:
>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
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-1 简单消息
python
message = "Hello Python world!"
print(message)
2-2 多条简单消息
python
message = "Hello Python world!"
print(message)
message = "Hello Python Crash Course world!"
print(message)
2-3 个性化消息
python
name = "Eric"
print("Hello " + name + ", would you like to learn some Python today?")
2-4 调整名字的大小写
python
name = "ada lovelace"
print(name.lower())
print(name.upper())
print(name.title())
2-5 名言
python
print('Albert Einstein once said, "A person who never made a mistake never tried anything new."')
2-6 名言 2
python
famous_person = "Albert Einstein"
message = famous_person + ' once said, "A person who never made a mistake never tried anything new."'
print(message)
2-7 剔除人名中的空白
python
name = "\tAlbert Einstein\n"
print(name)
print(name.lstrip())
print(name.rstrip())
print(name.strip())
2-8 数字 8
python
print(5 + 3)
print(10 - 2)
print(4 * 2)
print(16 / 2)
2-9 最喜欢的数字
python
favorite_number = 7
print("My favorite number is " + str(favorite_number))
2-10 添加注释
python
# 作者:xxx 日期:xxxx-xx-xx
# 这个程序打印一条问候消息
print("Hello Python people!")
2-11 Python 之禅
在终端执行:
python
>>> import this
代码块汇总
python
# 变量赋值与使用
message = "Hello Python world!"
print(message)
# 字符串大小写
name = "ada lovelace"
print(name.title()) # Ada Lovelace
print(name.upper()) # ADA LOVELACE
print(name.lower()) # ada lovelace
# 字符串拼接
first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name
print(full_name)
# 空白处理
print("\tPython") # 制表符
print("Languages:\nPython\nC\nJavaScript") # 换行符
favorite_language = ' python '
favorite_language.rstrip() # 删除末尾空白
favorite_language.lstrip() # 删除开头空白
favorite_language.strip() # 删除两端空白
# str() 转换
age = 23
message = "Happy " + str(age) + "rd Birthday!"
print(message)
# 注释
# 这是一条注释
print("Hello!")
# Python 之禅
import this
常见错误 / 陷阱
| 错误类型 | 示例 | 说明 | 解决 |
|---|---|---|---|
NameError |
print(mesage) |
变量名拼写错误 | 检查拼写一致性 |
SyntaxError |
单引号内含撇号 | 引号使用不当 | 改用双引号包裹 |
TypeError |
字符串 + 整数 | 类型不匹配 | 用 str() 转换 |
| 浮点数精度 | 0.2 + 0.1 |
结果含多余小数 | 暂时忽略,后续学习处理 |
| Python 2 除法 | 3 / 2 → 1 |
整数除法截断 | 确保操作数为浮点数 |
复习要点
- 变量命名规则:字母/数字/下划线,不能数字开头,不能包含空格
- 字符串可用单引号或双引号
-
title()/upper()/lower()--- 字符串大小写转换 -
+拼接字符串 -
\t制表符、\n换行符 -
rstrip()/lstrip()/strip()--- 删除空白 -
**乘方运算符 -
str()将非字符串值转换为字符串 -
#编写注释 -
import this查看 Python 之禅 - 先写出可运行的代码,再持续改进