学习进度
这是基础篇第 2 篇。上一篇我们把 Python 3.14 装好、用 uv 建好项目,跑通了第一行代码。今天开始正式给程序注入「内容」和「逻辑」:先让数据活起来,再让程序会做选择、会重复劳动。
前言用途
看完这篇,你能写出一个真正有用的程序:给它一个成绩,它告诉你等级;给它一组数据,它帮你统计。文章里的每段代码我都实际跑过,你照抄就能看到同样的结果。
前置知识
•电脑里装好了 Python 3.14 (上一篇教过)•会打开终端或 IDE ,知道怎么运行一个 .py 文件(用 uv run python 文件名.py)如果你这些还不太熟,翻回上一篇花 10 分钟补一下,再回来读。
通俗原理
变量:给数据贴个名字
编程里最频繁的动作,就是「把数据存起来,等会儿再用」。变量就是这个功能:用 = 把右边的值赋给左边的名字。
age=18# 整数price=9.9# 小数(浮点数)name="飞熊"# 文本(字符串)print(age,type(age))print(price,type(price))print(name,type(name))
运行结果:
18<class'int'>9.9<class'float'>飞熊<class'str'>
注意几个细节:
•你不需要声明「这是个整数」或「这是个字符串」, Python 看赋值自动判断,这就是「动态类型」。•type() 是内置函数,用来查看数据的类型,调试时特别好用。•变量名不要用中文,用英文或拼音,可以带数字,但不能用数字开头。Python 里最常用的基础类型就三种:int 整数、float 小数、str 字符串。以后还会见到列表、字典这些,那是用来装多个数据的。
运算符:让数据动起来
数据放好之后,要对它们做运算。最基本的算术运算符长这样:
print(17/3)# 除法:总是返回小数print(17//3)# 地板除:只留整数部分print(17%3)# 取余数print(2**10)# 幂运算:2 的 10 次方
运行结果:
这里有个新手最容易困惑的点:/ 和 // 的区别。/ 是普通除法,结果一定是小数;// 是地板除,结果只保留整数部分。% 是取余数,用来判断「能不能整除」特别方便。
除了算术运算符,还有比较运算符,结果只有 True 和 False 两种:
print(5>3)# 大于print(5==3)# 等于(注意是两个等号!)print(5!=3)# 不等于print(5>=5)# 大于等于
运行结果:
条件判断:让程序会做选择
有了比较运算符,就能让程序「看情况办事」了。语法是 if / elif / else:
score=85ifscore>=90:print("优秀")elifscore>=80:print("良好")elifscore>=60:print("及格")else:print("不及格")
运行结果:
规则很简单:
•if 后面的条件成立,执行它的代码块;不成立就往下看 elif。•elif 是「否则如果」的缩写,可以写任意多个,从上往下第一个成立的就执行。•冒号结尾,下一行必须缩进。缩进是 Python 表示「这块代码属于谁」的方式,同一个代码块缩进必须一致,默认用 4 个空格。循环:让程序会重复
手工重复的事,程序最擅长。两种循环:for 适合「数一遍」,while 适合「直到条件不成立」。
for 最常见搭配是 range(),生成一串整数:
运行结果:
关键点:range(5) 生成的是 0 到 4 ,不含 5 。 这是 Python 的惯例,所有范围都是「含头不含尾」。range 还能指定起点和步长:
print(list(range(5)))# 0 到 4print(list(range(5,10)))# 5 到 9print(list(range(0,10,3)))# 0 开始,每次加 3
运行结果:
[0, 1, 2, 3, 4][5, 6, 7, 8, 9][0, 3, 6, 9]
for 还可以直接遍历列表里的每个元素(列表就是方括号装一串数据,下一篇细讲,先用起来):
forfruitin["苹果","香蕉","橙子"]:print(fruit)
运行结果:
完整代码
把今天学的串起来,写一个「成绩评级 + 统计及格人数」的小程序。新建 grade.py,完整代码如下:
score=85ifscore>=90:level="优秀"elifscore>=80:level="良好"elifscore>=60:level="及格"else:level="不及格"print(f"成绩 {score} 分,等级:{level}")scores=[88,92,55,73,61]pass_count=0forsinscores:ifs>=60:pass_count=pass_count+1print(f"及格人数:{pass_count} 人")
运行结果
用 uv run python grade.py 运行:
如果你改 score = 58,第一行会变成「成绩 58 分,等级:不及格」;把 scores 里的数字改一改,统计结果也会跟着变。这就是程序的意义:数据变,逻辑不变,结果自动跟着变。
踩坑总结
这些错我第一次学的时候全踩过,提前告诉你:
1.字符串和数字不能直接相加。"成绩" + 85 会报错 TypeError: can only concatenate str (not "int") to str。要么把数字转成字符串 str(85),要么用 f-string :f"成绩{85}分"。2.比较用 ==,赋值用 =。if score = 85: 是语法错误,直接报错。3.range(5) 不含 5。想输出 1 到 5 ,要写 range(1, 6)。4.变量必须先赋值再用。用没定义过的变量,报 NameError: name 'xxx' is not defined。5.缩进错误。if 下面不缩进,报 IndentationError: expected an indented block。看到这个错,先检查缩进。进阶拓展
两个循环控制词,能让循环更灵活:
•break:立刻跳出整个循环。比如找第一个满足条件的数就停:foriinrange(10):ifi==3:breakprint(i)
运行结果:
•continue:跳过本轮,直接进入下一轮。比如不打印 2 :foriinrange(5):ifi==2:continueprint(i)
运行结果:
while 适合「不知道要循环几次」的场景。比如数到 5 就停:
n=1whilen<=5:print(n)n=n+1
运行结果:
注意:while 的条件永远为真就会死循环。上面的代码别忘了 n = n + 1 这行,它让条件最终不成立。死循环时按 Ctrl+C 强制中断。
小结
今天学会了 4 件事:
•变量用 = 赋值, Python 自动判断类型;三种基础类型是 int、float、str。•运算符:/ 除法返回小数,// 地板除取整,% 取余,** 幂;比较运算符返回 True/False。•条件判断 if/elif/else,让程序做选择;代码块靠缩进分组。•循环:for + range() 遍历固定次数,while 循环到条件不成立;break 跳出、continue 跳过。自检清单:能不看笔记写出 if/elif/else 判断成绩等级吗?能说出 range(5) 输出 0 到 4 而不是 1 到 5 吗?能说出字符串和数字相加为什么报错吗?都答上来,这篇就过关了。