Python 从入门到实战(二):变量与数据类型(搞定 Python 的 “数据积木”)

文章目录
欢迎回到「Python 从入门到实战」系列专栏。上一篇咱们搭好了 Python 环境,写出了第一个打印 “Hello World” 的程序 —— 这就像学会了用锤子敲下第一颗钉子。但光会打印固定文字可不够,今天咱们要学 Python 的 “数据积木”:变量和数据类型。
简单说,变量就是 “装数据的容器”,数据类型就是 “不同类型的积木”(比如文字、数字)。学会它们,你就能让程序处理灵活的内容 —— 比如存储用户名字、计算成绩、拼接个性化消息,为后面写复杂程序打基础。
一、先搞懂:为什么需要变量?
上一篇的程序里,咱们写了print("Hello Python world!"),如果想改打印的内容,得手动改括号里的字符串。但实际场景中,比如做一个 “问候程序”,要给不同用户发不同消息,总不能每次都改代码吧?
这时候就需要变量了。比如用变量name存储用户名字,不管用户输入什么,程序都能自动生成问候语。举个直观的例子:
python
# 没有变量:每次改内容都要改代码
print("Hello, 小明!")
print("Hello, 小红!")
# 有变量:改一次变量值就行
name = "小明"
print(f"Hello, {name}!")
name = "小红"
print(f"Hello, {name}!")
运行后会输出:
plaintext
Hello, 小明!
Hello, 小红!
Hello, 小明!
Hello, 小红!
看到没?变量就像 “可替换的标签”,把值贴在标签上,用的时候直接调用标签就行 —— 这就是变量的核心作用:存储数据、灵活复用。
二、变量:给数据贴 “标签”(命名 + 使用)
变量不难,但新手容易在 “命名” 和 “使用” 上踩坑。咱们一步步来,先掌握 “正确的变量用法”。
1. 变量的基本用法:赋值与调用
变量的语法很简单:变量名 = 值(等号是 “赋值”,不是 “等于”)。比如:
python
# 把“张三”赋值给变量name
name = "张三"
# 把18赋值给变量age
age = 18
# 调用变量:打印变量存储的值
print(name) # 输出:张三
print(age) # 输出:18
- 赋值时,等号左边是 “变量名”,右边是 “要存储的值”;
- 调用变量时,直接写变量名就行,不用加引号(加了引号就成字符串了,比如
print("name")会输出 “name”,而不是 “张三”)。
咱们来个实操:存储并打印个人信息。代码如下:
python
# 存储个人信息
name = "李华"
age = 20
hobby = "打篮球"
# 打印个人信息
print(f"我叫{name},今年{age}岁,喜欢{hobby}。")
运行结果:
plaintext
我叫李华,今年20岁,喜欢打篮球。
这里的f"{变量名}"是 “f 字符串”(上一篇提过,这篇详细讲),能把变量值嵌入字符串,特别实用。
2. 变量命名:3 条规则 + 2 个建议(避坑重点!)
变量名不能随便起,Python 有严格规则,违反了会报错。记住下面 3 条必须遵守的规则,再记住 2 个提升可读性的建议:
▶ 3 条强制规则(违反必报错)
- 只能包含字母、数字、下划线:比如
user_name、age1没问题,但user-name(有横杠)、age#1(有 #)不行; - 不能以数字开头:
1age会报错,age1没问题; - 不能用 Python 关键字:比如
print、if、for这些 Python 自带的 “特殊单词”,不能当变量名(附录里有完整关键字列表,不用死记,VS Code 会标红提醒)。
▶ 2 个实用建议(提升代码可读性)
- 见名知意:比如用
user_name代替a,用student_age代替x,别人一看就知道变量存的是什么; - 全小写 + 下划线(蛇形命名法):这是 Python 的约定,比如
favorite_color,不要用FavoriteColor或favoritecolor(后面学类的时候会讲大写的用法)。
▶ 新手常见错误示例(避坑!)
python
# 错误1:数字开头
1name = "张三" # 报错:SyntaxError: invalid syntax
# 错误2:用关键字
print = "打印内容" # 报错:会覆盖print函数,后面没法用print()了
# 错误3:有特殊符号
user-name = "李四" # 报错:SyntaxError: invalid syntax
# 正确示例
user_name = "李四"
student_age = 19
favorite_sport = "跑步"
3. 变量使用的常见坑:命名错误与值的修改
新手最容易犯的错是 “变量名拼写不一致”。比如:
python
# 错误:把message拼成了mesage
message = "Hello Python!"
print(mesage) # 报错:NameError: name 'mesage' is not defined
Python 会提示 “mesage 没定义”,这时候要检查变量名是否完全一致(大小写也区分,Message和message是两个不同变量)。
另外,变量的值可以随时修改,修改后变量会 “忘记旧值,记住新值”:
python
score = 85
print(f"第一次成绩:{score}") # 输出:第一次成绩:85
# 修改score的值
score = 92
print(f"第二次成绩:{score}") # 输出:第二次成绩:92
三、字符串:处理文字的 “万能工具”
字符串就是 “文字数据”,比如名字、地址、句子。Python 里用单引号或双引号包裹的内容都是字符串,比如"Python"、'编程'。这部分功能很多,咱们从 “最常用的操作” 入手。
1. 字符串的基本操作:大小写转换
处理用户输入时,经常需要统一文字格式(比如用户输入 “python”,要显示成 “Python”)。Python 提供了 3 个常用的大小写方法:
title():每个单词首字母大写(适合名字、标题);upper():全大写(适合强调内容);lower():全小写(适合存储用户输入,统一格式)。
示例代码:
python
# 定义一个字符串
text = "python programming"
# 首字母大写
print(text.title()) # 输出:Python Programming
# 全大写
print(text.upper()) # 输出:PYTHON PROGRAMMING
# 全小写
print(text.lower()) # 输出:python programming
# 实际应用:统一用户名格式
user_input = "Li Hua"
stored_name = user_input.lower() # 存储为全小写
print(f"存储的用户名:{stored_name}") # 输出:存储的用户名:li hua
print(f"显示的用户名:{stored_name.title()}") # 输出:显示的用户名:Li Hua
2. 字符串拼接:组合多个文字
有时候需要把多个字符串拼在一起,比如把名字和姓氏组合成全名。Python 里用+就能拼接字符串:
python
# 拼接名和姓
first_name = "张"
last_name = "三"
full_name = first_name + last_name # 拼接两个字符串
print(f"全名:{full_name}") # 输出:全名:张三
# 拼接字符串和变量
greeting = "Hello, " + full_name + "!"
print(greeting) # 输出:Hello, 张三!
# 更灵活的方式:f字符串(推荐)
greeting_f = f"Hello, {full_name}!你今天好吗?"
print(greeting_f) # 输出:Hello, 张三!你今天好吗?
注意:f 字符串里的变量要放在{}里,外面加f(比如f"内容{变量}"),比用+拼接更简洁,不容易出错。
3. 空白处理:删除多余空格
用户输入时可能会不小心多敲空格(比如输入 “python”,前后有空格),这时候需要删除多余空白。Python 提供了 3 个方法:
rstrip():删除字符串右边的空白;lstrip():删除字符串左边的空白;strip():删除字符串两边的空白。
示例代码:
python
# 定义一个带多余空白的字符串
favorite_language = " python "
# 删除右边空白
print(f"删除右边空白:'{favorite_language.rstrip()}'") # 输出:删除右边空白:' python'
# 删除左边空白
print(f"删除左边空白:'{favorite_language.lstrip()}'") # 输出:删除左边空白:'python '
# 删除两边空白
print(f"删除两边空白:'{favorite_language.strip()}'") # 输出:删除两边空白:'python'
# 实际应用:处理用户输入
user_input = input("请输入你喜欢的语言:") # 假设用户输入“ java ”
clean_input = user_input.strip() # 清理空白
print(f"你喜欢的语言是:{clean_input}") # 输出:你喜欢的语言是:java
注意:这些方法默认删除空格,也可以指定删除的字符(比如"https://nostarch.com".removeprefix("https://")删除前缀 “https://”,后面会讲)。
4. 删除前缀 / 后缀:简化 URL 或文件名
有时候需要提取字符串的核心部分,比如从 URL 里去掉 “https://”,从文件名里去掉 “.txt”。Python 3.9 + 提供了两个实用方法:
removeprefix(前缀):删除字符串开头的指定前缀;removesuffix(后缀):删除字符串结尾的指定后缀。
示例代码:
python
# 处理URL
url = "https://www.csdn.net"
simple_url = url.removeprefix("https://")
print(f"简化后的URL:{simple_url}") # 输出:简化后的URL:www.csdn.net
# 处理文件名
filename = "python_notes.txt"
name_without_suffix = filename.removesuffix(".txt")
print(f"无后缀的文件名:{name_without_suffix}") # 输出:无后缀的文件名:python_notes
# 注意:方法不改变原字符串,需要赋值给新变量
print(url) # 输出:https://www.csdn.net(原字符串没变)
5. 避坑:字符串的引号匹配
字符串必须用引号包裹,但要注意 “引号嵌套” 的问题。比如字符串里有撇号('),如果用单引号包裹会报错:
python
# 错误:单引号里有撇号,Python会误以为字符串提前结束
message = 'One of Python's strengths is its community.' # 报错:SyntaxError
# 正确1:用双引号包裹
message1 = "One of Python's strengths is its community."
print(message1) # 输出:One of Python's strengths is its community.
# 正确2:用转义字符\
message2 = 'One of Python\'s strengths is its community.'
print(message2) # 输出:One of Python's strengths is its community.
四、数值类型:处理数字的 “计算工具”
除了文字,程序还经常处理数字(比如年龄、成绩、价格)。Python 里的数值类型主要有两种:整数(没有小数点,比如 18、100)和浮点数(有小数点,比如 3.14、9.9)。
1. 整数运算:加减乘除与乘方
整数支持所有基本算术运算,符号和数学里一致:
+:加;-:减;*:乘;/:除(结果是浮点数);**:乘方(比如 2**3 表示 2 的 3 次方);%:取余(比如 7%3 表示 7 除以 3 的余数,结果是 1)。
示例代码:
python
# 基本运算
a = 10
b = 3
print(f"{a} + {b} = {a + b}") # 输出:10 + 3 = 13
print(f"{a} - {b} = {a - b}") # 输出:10 - 3 = 7
print(f"{a} * {b} = {a * b}") # 输出:10 * 3 = 30
print(f"{a} / {b} = {a / b}") # 输出:10 / 3 = 3.3333333333333335(浮点数)
print(f"{a} ** {b} = {a ** b}") # 输出:10 ** 3 = 1000(10的3次方)
print(f"{a} % {b} = {a % b}") # 输出:10 % 3 = 1(余数)
# 实际应用:计算矩形面积
length = 5
width = 3
area = length * width
print(f"矩形面积:{area}") # 输出:矩形面积:15
2. 浮点数运算:注意精度问题
浮点数就是带小数点的数,运算和整数类似,但要注意精度问题—— 有时候结果会多几位小数(比如 0.1+0.2 不是 0.3,而是 0.30000000000000004)。
示例代码:
python
# 浮点数基本运算
x = 0.1
y = 0.2
print(f"{x} + {y} = {x + y}") # 输出:0.1 + 0.2 = 0.30000000000000004
# 为什么会这样?
# 计算机用二进制存储浮点数,有些小数无法精确表示,就像1/3无法用十进制精确表示一样
# 解决办法:如果需要精确计算(比如金额),可以用round()取整
result = x + y
rounded_result = round(result, 1) # 保留1位小数
print(f"保留1位小数:{rounded_result}") # 输出:保留1位小数:0.3
3. 数值的实用技巧:下划线分隔与多变量赋值
- 用下划线分隔大数字:写大数字时,用下划线分隔(比如 14_000_000_000),Python 会自动忽略下划线,更易读;
- 同时给多个变量赋值:可以用一行代码给多个变量赋值,适合初始化多个变量。
示例代码:
python
# 下划线分隔大数字
universe_age = 14_000_000_000 # 表示140亿
print(universe_age) # 输出:14000000000(下划线被忽略)
# 同时给多个变量赋值
x, y, z = 0, 0, 0 # 三个变量都赋值为0
print(f"x={x}, y={y}, z={z}") # 输出:x=0, y=0, z=0
# 实际应用:交换两个变量的值
a = 10
b = 20
a, b = b, a # 交换a和b的值
print(f"交换后:a={a}, b={b}") # 输出:交换后:a=20, b=10
五、注释:给代码 “写说明书”
写代码时,要给关键部分加 “说明书”—— 这就是注释。Python 会忽略注释,但对自己和别人理解代码至关重要。
1. 单行注释:用 #开头
最常用的注释方式,用#开头,后面跟注释内容。示例:
python
# 这是单行注释,用来解释下面的代码
# 功能:计算圆的面积
radius = 5 # 半径:5厘米
pi = 3.14159
area = pi * radius ** 2 # 圆的面积公式:πr²
print(f"圆的面积:{area}平方厘米") # 输出:圆的面积:78.53975平方厘米
建议:注释不要太啰嗦,也不要不写。比如 “计算圆的面积” 比 “这里是计算圆的面积的代码” 更简洁。
2. 注释的原则:“为什么” 比 “是什么” 重要
新手容易写 “废话注释”,比如:
python
# 定义变量x,赋值为10
x = 10
这完全没必要,因为代码本身已经很清楚了。注释应该解释 “为什么这么写” 或 “复杂逻辑”,比如:
python
# 由于用户输入的半径可能为负数,这里先取绝对值
radius = abs(float(input("请输入圆的半径:")))
六、Python 之禅:写出 “优雅的代码”
学完基础语法后,要了解 Python 的核心思想 ——“Python 之禅”(The Zen of Python)。在 Python 终端里输入import this就能看到,咱们挑几个对新手最重要的原则:
-
**Beautiful is better than ugly.(优美胜于丑陋)**代码要整洁,比如变量名见名知意,缩进一致,让别人一看就懂。
-
**Simple is better than complex.(简单胜于复杂)**能用水浒传的例子说明,就别用红楼梦的剧情 —— 比如计算面积,直接写
pi*r²,别搞复杂的函数嵌套。 -
**Readability counts.(可读性很重要)**别写 “一行顶十行” 的炫技代码,比如把
if age >= 18: print("成年")写成print("成年")if age>=18 else None,虽然短,但可读性差。
咱们用 “计算成年与否” 的代码示例,对比 “优雅” 和 “不优雅”:
python
# 不优雅:变量名模糊,无注释,缩进混乱
a=17
if a>=18:
print("成年")
else:
print("未成年")
# 优雅:变量名清晰,有注释,缩进一致
# 功能:根据年龄判断是否成年(18岁及以上为成年)
user_age = 17
if user_age >= 18:
print("成年,可独立办理业务")
else:
print("未成年,需监护人陪同")
七、综合实操:制作 “个人信息卡片”
咱们把今天学的内容综合起来,做一个 “个人信息卡片” 程序,功能如下:
- 用变量存储姓名、年龄、爱好、网址;
- 处理字符串格式(比如姓名首字母大写,网址去掉前缀);
- 计算 “出生年份”(假设当前是 2024 年);
- 用 f 字符串拼接个性化信息。
完整代码:
python
# 个人信息卡片程序
# 1. 存储基本信息(注意处理用户输入的多余空白)
name = input("请输入你的姓名:").strip().title() # 首字母大写,去空白
age = int(input("请输入你的年龄:")) # 转换为整数
hobby = input("请输入你的爱好:").strip()
url = input("请输入你的个人网址(可选,如https://www.csdn.net):").strip()
# 2. 计算出生年份(假设当前是2024年)
birth_year = 2024 - age
# 3. 处理网址(如果有输入,去掉前缀https://)
if url: # 如果用户输入了网址
simple_url = url.removeprefix("https://").removeprefix("http://")
else:
simple_url = "未填写"
# 4. 打印个人信息卡片
print("\n===== 个人信息卡片 =====")
print(f"姓名:{name}")
print(f"年龄:{age}岁")
print(f"出生年份:{birth_year}年")
print(f"爱好:{hobby}")
print(f"个人网址:{simple_url}")
print("======================")
运行示例(用户输入):
plaintext
请输入你的姓名: li si
请输入你的年龄:22
请输入你的爱好: 看电影、编程
请输入你的个人网址(可选,如https://www.csdn.net):https://blog.csdn.net/lisi
===== 个人信息卡片 =====
姓名:Li Si
年龄:22岁
出生年份:2002年
爱好:看电影、编程
个人网址:blog.csdn.net/lisi
======================
八、小结与下一篇预告
这篇你学到了什么?
- 变量:存储数据的 “标签”,遵守命名规则,避免拼写错误;
- 字符串:处理文字的工具,包括大小写转换、拼接、空白处理、删除前缀后缀;
- 数值类型:整数和浮点数的运算,注意浮点数精度问题;
- 注释:给代码写 “说明书”,解释 “为什么” 而非 “是什么”;
- Python 之禅:写出优雅、可读的代码。
下一篇预告
今天咱们学了 “单个数据” 的处理,但实际场景中经常需要处理 “多个数据”(比如一个班级的学生名单、多个爱好)。下一篇咱们会学 Python 的 “有序数据集合”——列表和元组,教你如何批量管理多个数据,为后面的循环操作打基础。
如果这篇内容帮你搞定了变量和数据类型,欢迎在评论区分享你的 “个人信息卡片” 代码,咱们一起交流进步~
- 点赞
- 收藏
- 关注作者
评论(0)