Python编程基础语法详解:变量、数据类型与控制流入门
从变量、基本数据类型、类型转换到if条件判断、for循环和while循环,系统讲解Python编程基础语法,并通过完整代码示例帮助初学者理解程序如何保存数据、判断条件和重复执行任务。
学习Python基础语法,可以先抓住三个问题:数据保存在哪里、数据是什么类型、程序下一步执行什么。变量负责保存和引用数据,数据类型决定这些数据能够怎样运算,条件判断和循环组成控制流,决定代码按照什么顺序执行。把这三部分连起来,就已经能够写出不少完整的小程序。
本文从可以直接运行的Python代码开始,依次讲清变量、常用数据类型、类型转换、条件判断以及循环,并特别说明一些看起来合理但容易造成误解的写法。
一、先理解Python代码是怎样运行的
Python程序通常按照从上到下的顺序执行。例如下面的代码先创建变量,再进行计算,最后输出结果:
price = 25
count = 3
total = price * count
print(total)
示例输出:
75
这里实际上已经涉及三个最核心的基础概念:price和count是变量,它们保存的值属于整数类型,price * count是一条表达式,而print()负责输出结果。
二、Python变量:给数据一个可以引用的名字
变量可以理解为程序中引用数据的名称。Python创建变量时不需要提前声明类型,只要直接赋值即可:
name = "Tom"
age = 20
height = 1.75
is_student = True
赋值运算符=的含义不是数学中的“左右相等”,而是把右侧计算得到的对象绑定给左侧变量名。例如:
score = 80
score = score + 5
print(score)
示例输出:
85
score = score + 5如果按照数学等式理解,会觉得不成立;但按照编程中的赋值理解就很自然:先读取原来的score,计算80 + 5,再让score引用新的结果85。
变量名应该怎样写
Python变量名通常由字母、数字和下划线组成,但不能以数字开头。下面这些写法是常见且容易阅读的:
user_name = "Alice"
user_age = 18
total_price = 99.5
下面的写法则存在问题:
# 不能以数字开头
# 2name = "Alice"
# Python关键字不能直接作为变量名
# class = "Python"
虽然像a、x1这样的变量名在语法上没有问题,但实际代码中最好让名称体现含义。计算商品总价时,total_price通常比x更容易理解。
Python变量不是固定类型的盒子
初学时经常把变量解释成“装数据的盒子”,这种比喻适合帮助入门,但并不完全准确。Python变量名更接近于对对象的引用,因此同一个变量名可以在不同时刻指向不同类型的数据:
value = 10
print(type(value))
value = "Python"
print(type(value))
示例输出:
<class 'int'>
<class 'str'>
也就是说,不能简单理解为“变量value永远是整数类型”。更准确的说法是:第一次赋值后它引用整数对象,第二次赋值后又引用字符串对象。
三、Python常用数据类型
数据类型决定一个值是什么,也决定可以对它进行哪些操作。入门阶段最常用的是整数、浮点数、字符串、布尔值,以及列表、元组、字典和集合等容器类型。
| 类型 | Python名称 | 示例 | 常见用途 |
|---|---|---|---|
| 整数 | int |
10 |
数量、次数、年龄等 |
| 浮点数 | float |
3.14 |
带小数的数值 |
| 字符串 | str |
"Python" |
姓名、文本、消息等 |
| 布尔值 | bool |
True |
表示真或假 |
| 列表 | list |
[1, 2, 3] |
保存一组可修改的数据 |
| 元组 | tuple |
(1, 2, 3) |
保存一组通常不修改的数据 |
| 字典 | dict |
{"name": "Tom"} |
使用键和值组织数据 |
| 集合 | set |
{1, 2, 3} |
处理不重复元素及集合运算 |
整数与浮点数
count = 10
price = 12.5
print(count + 2)
print(price * 2)
示例输出:
12
25.0
整数和浮点数都可以参与算术运算。常见运算符包括:
+:加法-:减法*:乘法/:除法//:整除%:取余**:幂运算
需要注意,/和//不是同一种运算:
print(7 / 2)
print(7 // 2)
print(7 % 2)
示例输出:
3.5
3
1
字符串
字符串用于表示文本,可以使用单引号或双引号:
language = "Python"
message = 'Hello'
print(message + " " + language)
示例输出:
Hello Python
这里的+并不是数值相加,而是字符串拼接。这也说明同一个运算符的行为会受到数据类型影响。
字符串还可以通过下标读取某个字符:
text = "Python"
print(text[0])
print(text[1])
示例输出:
P
y
Python序列的下标从0开始,因此text[0]是第一个字符,而不是第二个。
布尔值
布尔类型只有两个值:True和False。它们经常由比较表达式产生:
age = 20
print(age >= 18)
print(age < 18)
示例输出:
True
False
布尔值是后面学习if条件判断的基础,因为条件表达式最终需要判断真或假。
列表和字典
当一个变量需要保存多个值时,可以使用列表:
scores = [80, 92, 76]
print(scores[0])
scores.append(88)
print(scores)
示例输出:
80
[80, 92, 76, 88]
如果数据天然存在“名称—值”关系,可以使用字典:
user = {
"name": "Tom",
"age": 20
}
print(user["name"])
print(user["age"])
示例输出:
Tom
20
四、使用type()查看数据类型
当不确定变量当前保存的是什么类型时,可以使用type():
age = 18
price = 9.9
name = "Tom"
enabled = True
print(type(age))
print(type(price))
print(type(name))
print(type(enabled))
示例输出:
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
type()特别适合学习和排查类型相关问题。例如下面的代码看起来像是在计算两个数字:
a = "10"
b = "20"
print(a + b)
示例输出:
1020
原因是a和b实际上都是字符串,所以+执行的是字符串拼接,而不是整数加法。
五、类型转换:输入的数据不一定是需要的类型
类型转换是Python入门时非常重要的一步。尤其是使用input()读取用户输入时,无论用户输入看起来是不是数字,得到的默认都是字符串。
age = input("请输入年龄:")
print(type(age))
如果用户输入20,变量age保存的是字符串"20",而不是整数20。
如果要进行数值运算,需要主动转换:
age_text = input("请输入年龄:")
age = int(age_text)
next_age = age + 1
print("明年年龄:", next_age)
假设输入20,示例输出:
明年年龄: 21
常见类型转换函数有:
int():转换为整数float():转换为浮点数str():转换为字符串bool():转换为布尔值
int("20")可以成功,但int("Python")不能转换成整数,会产生异常。
六、比较运算和逻辑运算:控制流的条件基础
程序要决定“执行哪一段代码”,通常需要先得到一个真假结果。比较运算符就是产生布尔结果的重要工具。
| 运算符 | 含义 | 示例 |
|---|---|---|
== |
是否相等 | age == 18 |
!= |
是否不相等 | age != 18 |
> |
大于 | score > 60 |
< |
小于 | score < 60 |
>= |
大于等于 | age >= 18 |
<= |
小于等于 | age <= 18 |
这里最容易混淆的是=和==:
age = 18 # 赋值
print(age == 18) # 比较
=是赋值,而==才是在判断两边是否相等。
多个条件还可以使用and、or和not组合:
age = 20
has_ticket = True
print(age >= 18 and has_ticket)
示例输出:
True
and要求两边条件都成立;or只需要至少一个条件成立;not则用于取反。
七、if条件判断:让程序根据条件选择分支
if用于判断条件。如果条件成立,就执行对应的代码块。
age = 20
if age >= 18:
print("已成年")
当需要处理条件不成立的情况时,可以增加else:
age = 16
if age >= 18:
print("已成年")
else:
print("未成年")
如果存在多个互斥条件,可以使用elif:
score = 85
if score >= 90:
print("优秀")
elif score >= 60:
print("通过")
else:
print("未通过")
示例输出:
通过
这里判断顺序很重要。Python从上向下检查,一旦某个分支条件成立并执行,后面的elif和else就不会再检查。
因此下面这种顺序虽然语法没有问题,但逻辑上不符合预期:
score = 95
if score >= 60:
print("通过")
elif score >= 90:
print("优秀")
它会输出通过,因为95 >= 60已经成立,后面的score >= 90不会再判断。正确做法是优先判断范围更严格的条件。
八、缩进不是排版问题,而是Python语法的一部分
Python使用缩进表示代码块,这是初学时必须特别注意的地方。
age = 20
if age >= 18:
print("条件成立")
print("这两行都属于if代码块")
print("这行不属于if代码块")
冒号后的缩进代码属于if分支。退出缩进后,程序又回到正常执行流程。
推荐统一使用4个空格作为一级缩进,不要在同一个代码块中随意混用不同数量的空格。
九、for循环:对一组数据逐个处理
如果已经有一组数据,并希望依次处理其中每个元素,for循环通常是最直接的选择。
languages = ["Python", "Java", "Go"]
for language in languages:
print(language)
示例输出:
Python
Java
Go
每循环一次,变量language就会依次得到列表中的一个元素。
使用range()生成整数序列
如果要重复执行固定次数,可以配合range():
for i in range(5):
print(i)
示例输出:
0
1
2
3
4
range(5)产生的是从0开始、到5之前结束的整数序列。因此它包含0到4,不包含5。
也可以明确指定起点和终点:
for i in range(1, 6):
print(i)
示例输出:
1
2
3
4
5
这里的规则可以记成“左边包含,右边不包含”:从1开始,一直到6之前停止。
十、while循环:只要条件成立就继续执行
while循环适合循环次数事先不一定明确,但能够用条件决定是否继续执行的情况。
count = 1
while count <= 3:
print("第", count, "次执行")
count = count + 1
示例输出:
第 1 次执行
第 2 次执行
第 3 次执行
程序每次执行循环前都会检查count <= 3。循环内部又执行count = count + 1,所以条件最终会变成False并退出循环。
True,而循环内部又没有改变相关变量或主动退出,程序就会持续执行。例如忘记增加count就是常见原因。
十一、break与continue:改变循环内部的执行方式
break用于直接结束当前循环。例如在一组数据中找到目标后,不需要继续检查:
numbers = [3, 7, 12, 18, 25]
for number in numbers:
if number == 12:
print("找到了")
break
而continue不会结束整个循环,它只是跳过本次循环剩余代码,直接进入下一次。
for number in range(1, 6):
if number == 3:
continue
print(number)
示例输出:
1
2
4
5
这里遇到3后执行continue,所以本次循环后面的print(number)被跳过,但循环仍然会继续处理4和5。
十二、for和while应该怎样选择
两种循环都可以完成重复执行任务,但表达的意图不同。
当你要遍历一个已有序列,或者已经知道大致重复次数时,通常使用for更清晰:
for name in ["Tom", "Lucy", "Jack"]:
print(name)
当循环是否继续主要依赖某个动态条件时,while更自然:
password = ""
while password != "python123":
password = input("请输入密码:")
print("密码正确")
“for用于固定次数、while用于不固定次数”是一个方便入门的说法,但不能理解得过于绝对。真正应该判断的是:当前任务是在遍历一个可迭代对象,还是希望在某个条件为真期间不断执行。
十三、把变量、数据类型和控制流组合起来
单独学习每条语法还不够,更重要的是理解它们怎样配合。下面用一个简单的成绩统计程序把前面的知识连接起来。
scores = [85, 46, 92, 73, 58]
passed = 0
failed = 0
for score in scores:
if score >= 60:
passed = passed + 1
else:
failed = failed + 1
print("通过人数:", passed)
print("未通过人数:", failed)
示例输出:
通过人数: 3
未通过人数: 2
这段代码虽然很短,但已经包含了多个基础知识点:
scores是一个列表,用于保存多项数据。passed和failed是整数变量,用于保存统计结果。for逐个读取列表中的成绩。if判断当前成绩是否大于等于60。- 根据判断结果,程序更新对应的计数变量。
这就是Python程序最常见的基本结构之一:先准备数据,再遍历数据,在循环中根据条件做出不同处理,最后得到结果。
十四、一个完整的入门练习:输入成绩并判断等级
下面再写一个需要用户输入的完整程序。它会读取成绩,将字符串转换成整数,再按照范围判断等级。
score_text = input("请输入成绩:")
score = int(score_text)
if score < 0 or score > 100:
print("成绩应在0到100之间")
elif score >= 90:
print("等级:优秀")
elif score >= 80:
print("等级:良好")
elif score >= 60:
print("等级:通过")
else:
print("等级:未通过")
假设输入86,示例输出:
等级:良好
这个例子值得按程序真正执行的顺序理解:
input()读取用户输入,得到字符串。int()把字符串转换成整数。- 先检查成绩是否超出合理范围。
- 如果范围正常,再从较高分数段开始依次判断。
- 执行第一个满足条件的分支,其余分支不再执行。
这里先判断score < 0 or score > 100也体现了一种常见思路:在进入主要业务判断之前,先处理明显无效的数据。
十五、初学Python时容易混淆的几个语法点
1. =不是“判断相等”
=用于赋值,==用于比较:
age = 18
if age == 18:
print("年龄是18")
2. input()得到的不是自动识别后的数字
用户输入18并不意味着Python自动得到整数18。需要数值计算时通常要转换:
age = int(input("请输入年龄:"))
3. range()的结束值通常不包含在结果中
list(range(1, 5))
对应的是:
[1, 2, 3, 4]
不是[1, 2, 3, 4, 5]。
4. if判断顺序会影响结果
如果多个条件存在包含关系,应优先判断更严格的条件。例如判断90分以上时,应放在60分以上之前。
5. while需要考虑怎样退出
写while时,可以顺手问自己一句:哪一个变量会改变,条件最终怎样变成False?如果无法回答,就需要检查是否可能产生无限循环。
6. Python中的缩进具有语法意义
不要把缩进只看成代码格式。条件判断、循环等代码块都通过缩进确定范围,缩进错误可能改变程序逻辑,甚至直接导致语法错误。
十六、怎样练习这些基础语法
变量、类型和控制流不适合只靠记忆语法。更有效的办法是把它们组合成一些很小但完整的程序。
可以按照下面的顺序练习:
- 创建几个变量,练习整数、浮点数、字符串和布尔值。
- 使用
type()观察不同变量的类型。 - 使用
input()读取数据,并通过int()或float()转换。 - 写一个
if / elif / else程序判断数值范围。 - 用
for遍历列表并统计结果。 - 用
while实现重复输入,直到满足退出条件。
例如可以自己尝试完成下面三个小练习:
- 输入一个整数,判断它是正数、负数还是0。
- 保存5个成绩,使用循环计算通过人数。
- 反复要求用户输入密码,输入正确后退出循环。
这些练习规模很小,却能覆盖变量、类型转换、比较运算、条件判断和循环,比单独背诵语法更容易建立完整理解。
十七、Python基础语法学习脉络总结
Python基础语法并不是一组互不相关的规则。变量让程序能够保存和引用数据;数据类型决定这些数据能够进行什么操作;表达式负责计算或比较;if根据条件选择代码分支;for和while让同一段逻辑重复执行。
真正需要建立的是这样一条思路:先确认手里有什么数据,再确认数据是什么类型,根据需要进行计算或比较,然后通过条件判断和循环决定程序怎样继续运行。
当你能够独立写出“读取输入 → 转换类型 → 判断条件 → 循环处理 → 输出结果”这样的小程序时,变量、数据类型与控制流就不再只是几条孤立语法,而已经组成了Python编程最基础的一套执行逻辑。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













