菜单

Administrator
发布于 2026-10-15 / 2 阅读
0
0

Python P2:变量、数据类型与字符串

Python P2:变量、数据类型与字符串

系列:Python 从零开始 · P2 这一课:变量怎么起名字、Python 里有哪几种数据、字符串的十八般武艺

P1 里我们写下了第一行代码,认识了 print() 和交互模式。这一课打地基:变量(给数据起名字)、数据类型(数据分哪几种),以及你天天打交道的字符串。这三样是后面所有内容的地盘,不牢的话 for 循环、函数全是空中楼阁。

一、变量:给数据起个名字

name = "Chris"
age = 3

name、age 就是变量。= 不是数学里的"等于",而是赋值:把右边的值装进左边的名字里。读作"把 Chris 赋值给 name"。

变量名有规矩:

  1. 只能用字母、数字、下划线,且不能以数字开头:name1 ✅,1name ❌

  2. 区分大小写:Name 和 name 是两个变量

  3. 别用关键字:if、for、def 这些 Python 自己要用的词不能当变量名

  4. 见名知意:evens(偶数们)比 x 好一万倍——三个月后回看代码,x 是什么你得猜半天

建议用英文起名字。中文变量名 Python 允许,但跟全世界的代码格格不入,协作、提问、查资料都不方便。

变量是"贴标签",不是"装盒子"

a = [1, 2, 3]
b = a
b.append(4)
print(a)  # [1, 2, 3, 4]——a 也变了!

b = a 不是复制了一份列表,而是给同一个列表又贴了个标签 b。通过 b 改,a 也看得到。

二、数据类型:数据分哪几种

Python 里每个值都有"种类",叫数据类型。先看长相就能分出来:

  • 整数 int:1、-5、0——没小数点、没引号

  • 浮点数 float:3.14、2.5——有小数点

  • 字符串 str:"香蕉"、'hi'——引号包着

  • 布尔 bool:True、False——只有这两个值,首字母大写

  • 列表 list:["苹果", "香蕉"]——方括号包着

  • 字典 dict:{"名": "Chris"}——花括号,键值对

拿不准就用 type() 查:

>>> type("香蕉")
<class 'str'>
>>> type(3.14)
<class 'float'>
>>> type(["苹果"])
<class 'list'>

引号的学问

"1" 和 1 是两种东西:

>>> 1 + 2
3
>>> "1" + "2"
'12'

1 + 2 是数学加法;"1" + "2" 是两个"文字"拼起来。引号决定了它是拿来算的还是拿来读的。

单引号双引号没区别,但别混用。另外注意中文引号这个大坑:print("你好") 用中文引号会报 SyntaxError,必须用英文引号。手机备忘录写好再粘贴最容易中招,报 SyntaxError 先检查引号。

布尔:非真即假

True、False 注意大小写。布尔最常出现在 if 和 while 的条件里。== 是"等不等于"(两个等号),别写成 =(那是赋值)——新手最高频的笔误之一。

三、字符串:文本的十八般武艺

3.1 大小写与清理

>>> s = "  Hello World  "
>>> s.strip()
'Hello World'        # 去掉两端空格
>>> s.upper()
'  HELLO WORLD  '    # 全大写
>>> s.lower()
'  hello world  '    # 全小写
>>> s.replace("World", "Python")
'  Hello Python  '   # 替换

strip() 在处理用户输入、读配置文件时特别常用。

3.2 split 和 join:拆和合

>>> "a,b,c".split(",")
['a', 'b', 'c']       # 按逗号拆成列表
>>> "-".join(['a', 'b', 'c'])
'a-b-c'               # 用横杠拼回去

这对组合是解析文本的万金油。服务器日志里一行 2026-10-14 ERROR 磁盘满了,line.split() 一拆,单词全进列表:

>>> log = "2026-10-14 ERROR 磁盘满了"
>>> log.split()
['2026-10-14', 'ERROR', '磁盘满了']
>>> log.split()[1]
'ERROR'

split() 括号里不写东西,默认按空格拆。[1] 是取列表第 1 个元素(从 0 开始数)。

3.3 in:查有没有

>>> "error" in "disk error full"
True
>>> "ERROR" in "disk error full"
False                 # 区分大小写!

在日志里找关键词就靠它。注意大小写敏感。

3.4 f-string:最顺手的拼接

>>> name = "Chris"
>>> print(f"你好,{name}!")
你好,Chris!

引号前加个 f,花括号里直接放变量或表达式:

>>> n = 3
>>> print(f"2 的 {n} 次方是 {2 ** n}")
2 的 3 次方是 8

比 "你好," + name + "!" 好写、好读得多。

3.5 转义字符:打不出来的字符

\n 是换行,\" 是引号本身,\ 是反斜杠本身。记住 \n 这一个最常用:

>>> print("第一行\n第二行")
第一行
第二行

四、方法 vs 属性:点后面的两种东西

evens.append(s)     # 方法:有括号
"hello".upper()     # 方法:有括号
response.status     # 属性:没括号
  • 方法(有括号):让这个东西干一件事。append(s) 是"塞东西",upper() 是"变大写"。

  • 属性(没括号):拿这个东西的一个数据。response.status 是 response 身上带着的状态码,直接拿。

看到点,先看有没有括号,就知道是哪种。想知道一个东西有哪些方法,进交互模式用 dir() 看:dir("hello")。

五、input():让脚本跟你对话

name = input("你叫什么名字?")
print(f"你好,{name}!")

input() 会停下来等用户打字回车,把输入的内容当字符串返回。注意这个"当字符串":

>>> age = input("你几岁?")
你几岁?3
>>> type(age)
<class 'str'>      # 是字符串 "3",不是数字 3!

想当数字用,得转换:age = int(input("你几岁?"))。int()、str()、float() 是类型转换函数。用户输入的东西永远先当字符串,算数之前先转换——新手 bug 重灾区。

六、动手练习

log = "2026-10-14 10:23:45 ERROR /var/log disk full"
  1. 用 split() 把它拆成列表,打印出来,数一数有几个元素

  2. 先猜再验证:"ERROR" in log 是 True 还是 False?"error" in log 呢?

  3. 用 f-string 输出:磁盘在 10:23:45 满了(提示:拆出来的列表里,时间是第几个元素?从 0 开始数)

  4. 写个小脚本:用 input() 问用户要检查的网址,复用 P1 的 check_site.py 逻辑,检查用户输入的网站能不能打开

七、本课小结

  • 变量:= 是赋值,见名知意,别用关键字

  • 数据类型:int / float / str / bool / list / dict,看长相分辨

  • 引号:"1" 是文字,1 是数字;警惕中文引号

  • == vs =:双等号是比较,单等号是赋值

  • 字符串方法:strip / upper / replace / split / join / in

  • f-string:f"{变量}",最顺手的拼接

  • 方法 vs 属性:有括号是动作,没括号是数据

  • input():返回的永远是字符串,算数前先 int() 转换


上一课 P1:写下你的第一行代码 下一课 P3:条件与循环——if、for、while。 Root 日记 · Python 系列 P2 · 2026-10-14


评论