系列文章

Python 从入门到精通

第 2 / 36 篇

从环境安装和基础语法出发,逐步学习工程实践、自动化、数据处理与 Web 开发。

  1. 01
    Python 怎么装、怎么用
  2. 02
    变量、数字和字符串正在阅读
  3. 03
    列表:把一组数据放在一起
  4. 04
    元组、集合和字典
  5. 05
    条件判断:让程序做选择
  6. 06
    循环:重复的事交给程序
  7. 07
    函数:把代码整理成可复用的块
  8. 08
    模块与包:拆分你的程序
  9. 09
    输入、输出与字符串格式化
  10. 10
    文件读写:保存程序的数据
  11. 11
    异常处理:程序出错时怎么办
  12. 12
    基础阶段练习:命令行记账本
  13. 13
    类和对象:面向对象入门
  14. 14
    继承、组合与特殊方法
  15. 15
    迭代器与生成器
  16. 16
    列表推导式与生成器表达式
  17. 17
    装饰器:给函数增加能力
  18. 18
    上下文管理器与 with
  19. 19
    类型标注与 dataclass
  20. 20
    正则表达式:从文本中找规律
  21. 21
    日期、时间与时区
  22. 22
    日志与调试
  23. 23
    虚拟环境与依赖管理
  24. 24
    测试:让修改不再提心吊胆
  25. 25
    网络请求:用 Python 调用 API
  26. 26
    网页解析与合规采集
  27. 27
    操作 Excel、CSV 与批量文件
  28. 28
    SQLite:给程序加一个数据库
  29. 29
    数据分析入门:NumPy 与 Pandas
  30. 30
    画图:把数据变得直观
  31. 31
    Flask 入门:做一个小网站
  32. 32
    异步编程:同时处理多项任务
  33. 33
    线程、进程与并发选择
  34. 34
    性能分析与优化
  35. 35
    项目结构、配置与发布
  36. 36
    综合项目:从需求到上线

查看整个系列 →

上一篇文章里,我们装好了 Python,也学会了怎么在交互式环境里让它跟你对话。从这一篇开始,我们正式学习 Python 的语法——先认识程序里最基本的三个概念:变量、数字和字符串

变量:给数据起个名字

程序要做的事,本质上就是处理数据。数据在内存里存放,我们不方便直接记地址,于是给它们起名字——这个名字就是变量

# 把数字 18 存进名叫 age 的变量
age = 18
# 把文字"南山"存进名叫 site 的变量
site = "南山"
print(age)
print(site)

运行结果:

18
南山

这里 =赋值,不是数学里的”等于”。它的意思是:把右边的值装进左边的名字。你可以随时给变量换新值:

age = 18
age = 19  # 换新值
print(age)  # 输出 19

变量命名的规矩

起名有讲究,记三条就够了:

  • 只能由字母、数字、下划线组成,且不能以数字开头2name 不行,name2 行)
  • 不能跟 Python 的关键字重名(比如 ifforclass,这些词有特殊用途)
  • 推荐用小写 + 下划线的风格,比如 my_ageuser_name,这叫 snake_case

另外,给变量起名要有意义a = 1student_count = 1,三个月后回头看,后者一眼就懂。

数字:整数和浮点数

Python 里的数字主要有两种:

  • 整数(int)1-5100,没有小数点
  • 浮点数(float)3.14-0.52.0,带小数点
a = 10
b = 3
print(a + b)   # 13
print(a - b)   # 7
print(a * b)   # 30
print(a / b)   # 3.3333333333333335(除法总是返回浮点数)
print(a // b)  # 3(整除,丢掉小数部分)
print(a % b)   # 1(取余数)
print(a ** b)  # 1000(10 的 3 次方)

注意 /// 的区别:一个斜杠是精确除法,两个斜杠是整除。取余 % 很有用,判断奇偶、判断能否整除都靠它。

字符串:文字的世界

字符串(str)就是一段文字,用引号包起来。单引号双引号都行:

name = "南山"
greeting = '你好'
print(name)
print(greeting)

如果文字本身带引号,就用另一种引号包它:

sentence = "他说:'今天天气不错'"
print(sentence)

字符串可以拼接(用 +)和重复(用 *):

first = "南山"
second = "小站"
print(first + second)   # 南山小站
print(first * 3)        # 南山南山南山

数字和字符串不能乱混

新手最容易踩的坑:数字和字符串用 + 会报错。

age = 18
print("我今年" + age + "岁")  # 报错!
# TypeError: can only concatenate str (not "int") to str

因为 "我今年" 是字符串,age 是整数,两种类型不能直接拼接。解决办法是用 str() 把数字转成字符串:

age = 18
print("我今年" + str(age) + "岁")  # 我今年18岁

反过来,字符串转数字用 int()float()

s = "100"
print(int(s) + 1)   # 101
print(float("3.5") + 0.5)  # 4.0

要判断一个变量是什么类型,用 type()

print(type(18))      # <class 'int'>
print(type(3.14))    # <class 'float'>
print(type("南山"))   # <class 'str'>

f-string:最舒服的拼接方式

用 + 拼字符串容易乱,Python 3.6 之后推荐用 f-string——在字符串前加 f,用花括号把变量嵌进去:

name = "南山"
age = 1
print(f"我是{name},已经{age}岁了")  # 我是南山,已经1岁了

花括号里还能直接写表达式:

a, b = 7, 3
print(f"{a} 加 {b} 等于 {a + b}")  # 7 加 3 等于 10

这一招后面会反复用,先记住。

小结

  • 变量是给数据起的名字,用 = 赋值,命名要小写加下划线、有意义
  • 数字分整数 int 和浮点数 float,四则运算之外还有整除 //、取余 %、幂 **
  • 字符串用引号包裹,可以拼接(+)、重复(*)
  • 数字和字符串不能直接 +,用 str()/int()/float() 转换
  • f-string 是最优雅的字符串拼接方式,f"..." 加花括号即可

练习

  1. 定义变量 my_name 存你的名字,my_age 存年龄,用 f-string 输出一句话介绍自己
  2. 算一算:把 100 分平均分给 7 个人,每人多少、剩多少?(提示://%
  3. 试一下 int("3.14") 会发生什么?为什么报错?该怎么改?