2.3 变量和数据类型 —— Python 的数据世界观
如果把程序比作一个厨房,变量就是各种各样的碗——你把食材(数据)放到不同的碗里,然后给每个碗贴个标签(变量名)。
🎯 本节要点:理解变量、掌握 Python 的六大标准数据类型、学会 input() 和 print()
🔗 关联小程序: ch02_s2_3
一、变量——数据的"标签"
变量的概念很简单:变量就是用来存储数据的容器。
在 Python 中,变量不需要提前声明类型,直接赋值就行:
data = 100# data 是一个变量,它"装"着数字 100print(data) # 输出:100
这个过程就像你拿了一个空碗,贴上标签"data",然后往里面放了数字 100。
赋值的过程
当你写下 data = 100,Python 做了两件事:
- 创建数据:在内存中创建一个值为 100 的整数对象
听起来抽象,但你只需要记住:变量就是名字,数据才是本体。 同一个数据可以有多个名字。
a = 100b = a # b 也指向 a 所指向的数据print(a) # 100print(b) # 100a = 200# a 换了一个新数据print(a) # 200print(b) # 100(b 还是指向原来的数据)
变量的重新赋值
变量可以随时换"内容":
x = 10x = "hello"# Python 不介意你把字符串赋给之前装数字的变量x = True# 再换成布尔值也没问题
这就是 Python 被称为"动态类型语言"的原因——变量没有固定的类型限制,随时可以指向任何类型的数据。
虽然可以这样做,但在实际开发中,一个变量最好只装一种类型的数据。x 先装数字,又装字符串,再装布尔值——过两天你自己都看不懂 x 到底装的是什么。
二、Python 的六大标准数据类型
Python 的数据类型可以分为两大类。
不可变类型(创建后不能修改)
这四种类型一旦创建,内容就不能变了。如果你觉得"变了",实际上是创建了一个新的数据。
| | |
|---|
| 数字 | 0 | |
| 字符串 | "Python" | |
| 元组 | (1, 2, 'apple') | |
| 布尔 | True | |
可变类型(创建后可以修改)
| | |
|---|
| 列表 | [1, 2, 'apple'] | |
| 集合 | {'apple', 'orange', 1} | |
| 字典 | {"name": "张三", "age": 18} | |
你现在不用全记住,后半本书会逐个接触到。先把最常用的几种掌握好。
检查类型:type() 函数
Python 提供了一个非常实用的函数来查看数据的类型:
print(type(100)) # <class 'int'>print(type(3.14)) # <class 'float'>print(type("Hello")) # <class 'str'>print(type(True)) # <class 'bool'>print(type([1, 2])) # <class 'list'>print(type((1, 2))) # <class 'tuple'>print(type({"name": "张三"})) # <class 'dict'>print(type({1, 2, 3})) # <class 'set'>
初学阶段遇到不确定的类型——用 type() 看一眼。
三、字符串——最常见的文本类型
字符串是 Python 里用得最多的数据类型,没有之一。
三种写法
'Python123¥'# 单引号"Python4*&%"# 双引号'''Python s1 ~(())'''# 三引号(可换行)
单引号和双引号效果完全一样,可以互相嵌套:
print("他说:'你好'") # 双引号里面套单引号print('她说:"你好"') # 单引号里面套双引号
三引号通常用于多行文本:
poem = """静夜思床前明月光,疑是地上霜。"""
字符串的操作
# 拼接print("Hello" + " " + "World") # Hello World# 重复print("Ha" * 3) # HaHaHa# 长度print(len("Python")) # 6# 索引(从 0 开始)text = "Python"print(text[0]) # Pprint(text[-1]) # n(最后一个字符)
字符串是第二章的重点之一,后面还有专门的章节深入讲解。先知道最基础的就好。
四、数字类型
Python 的数字类型比你想象的要丰富:
0# 整型 int101# 整型 int-239# 整型 int3.1415# 浮点型 float4.2E-10# 浮点型(科学计数法)3.12+1.23j# 复数类型 complexTrue# 布尔型 bool(本质上是数字,True=1, False=0)False# 布尔型 bool
数字类型在本章第 4 节会单独重点讲,这里先了解有哪些就够了。
五、输入和输出——和用户"对话"
程序不是写给自己看的,你需要和用户交互。
输出:print()
你已经很熟悉了:
name = "小明"print("姓名:", name) # 输出多个值,中间用逗号隔开print("年龄:", 22) # 混搭字符串和数字address = "北京"print("地址:", address) # 输出:地址: 北京
注意:print() 的多个参数之间会自动加一个空格分隔。
输入:input()
input() 函数让程序停下来,等待用户在键盘上输入内容:
user_name = input("请输入账号:")password = input("请输入密码:")print("登录成功!")
当程序执行到 input(),会暂停等待你输入。你输入的内容按下回车后,会被保存到变量中。
重要:input() 返回的全是字符串
这是新手最容易踩的坑之一。用 input() 获取的内容,不管用户输入的是数字还是文字,返回的都是字符串类型。
age = input("请输入你的年龄:")print(type(age)) # <class 'str'>print(age + 1) # ❌ TypeError: can only concatenate str
解决方案:用 int() 或 float() 做类型转换
age = int(input("请输入你的年龄:"))print(type(age)) # <class 'int'>print(age + 1) # ✅ 正常,输出数字# 或者分两步写temp = input("请输入你的年龄:")age = int(temp)print(age + 1)
六、动手写一个登录界面
把这一节的内容串起来,写一个简单的登录程序:
print("=" * 30)print(" 欢迎登录系统")print("=" * 30)# 输入账号密码user_name = input("请输入账号:")password = input("请输入密码:")# 输出登录信息print("-" * 30)print(f"账号:{user_name}")print(f"密码:{'*' * len(password)}") # 密码用星号隐藏长度print("-" * 30)print("登录成功!欢迎回来," + user_name)
运行效果:
============================== 欢迎登录系统==============================请输入账号:小明请输入密码:**** (你输入的密码不会直接显示)------------------------------账号:小明密码:****------------------------------登录成功!欢迎回来,小明
虽然这个程序只学了不到一章的知识,但它已经有了"正经程序"的样子了:有输入、有输出、有界面结构。你可以把它发给朋友试试。
小结
- 变量是数据的"标签",用
= 赋值,随时可以换指向 - 数据类型有不可变(数字、字符串、元组、布尔)和可变(列表、字典、集合)两大类
🔗 关联课程编号:ch02_s2_3
下一篇:2.4 数字类型 —— 整数、浮点数、复数、布尔,一次搞懂 Python 的数字世界。