资讯动态

Python入门必学:输入输出、流程控制与循环语句详解

发布时间:2026/10/14 17:39:02 来源:尧图企业网站定制
1. 初见Python为什么第一篇只讲这三件事如果你问一百个Python老手入门的核心语法到底是什么其中九十个会告诉你先把输入输出、流程控制、循环语句这三样吃透其他的都可以往后放。这看起来很简单但恰恰是这三样构成了所有程序的基本骨架——任何程序跑起来都离不开拿数据进来、做判断处理、反复执行某段逻辑这个循环。我见过太多零基础的同学一上来就啃面向对象、文件操作结果学了两个星期连一个能跑的小程序都写不出来。问题就出在基础没有夯实。输入输出决定程序能不能和人对话流程控制决定程序会不会思考循环决定程序能不能干活。这三样掌握好了你其实已经能写出很多实用的小工具了比如一个简单的计算器、一个成绩等级判断器、一个九九乘法表。这篇内容就是把这三块拆开揉碎了讲清楚。我尽量不堆术语每个概念都配合能直接跑起来的代码举例并且把新手最容易踩的坑一并说透。不管你之前有没有碰过编程看完这篇你应该能自己独立写出第一个带逻辑的Python程序而不是只会打印一句Hello World。适合谁完全零基础、刚开始学Python的初学者或者学过一点但总感觉语法会了但写程序无从下手的同学。如果你是技术老手这篇可能偏基础但里面整理的一些踩坑点说不定也会让你会心一笑。2. 准备环境与第一个程序让Python先跑起来2.1 环境搭建不折腾装解释器就好写Python代码之前你需要的其实就一样东西Python解释器。这是运行Python程序的核心程序没有它你写的代码就是一堆看不懂的英文字母。安装步骤不复杂直接去Python官网下载对应系统的最新稳定版比如目前常见的3.10以上版本都可以双击安装时记得勾选Add Python to PATH这个选项否则你在命令行里输python会提示找不到命令。这个细节我替无数同学排查过——好几个测试环境跑不通最后发现就是当初安装时没有勾选这个。还有一个选择是安装Anaconda这类科学计算发行版它会附带安装Python和一大堆常用库。如果你之后要走数据分析、人工智能方向可以一步到位。但如果只是学习基础语法装官方版就够了轻量干净。装完之后怎么验证打开终端Windows下是CMD或PowerShellmacOS/Linux下是Terminal输入python --version能看到类似Python 3.11.x的输出就说明装好了。接下来随便建一个文本文件把后缀改成.py或者直接用IDE比如VSCode、PyCharm写你人生第一行代码print(Hello, Python!)在终端里执行python 文件名.py屏幕上出现Hello, Python!的那一刻你就正式迈进了编程世界的大门。提示尽量从Python 3开始学不要再看老的Python 2教程。Python 2已经停止维护这么多年了它的语法和3有很多不兼容的地方学了只会让你混乱。2.2 认识程序的三块拼图程序在计算机里运行本质上只做三件事接收数据、处理数据、输出结果。Python的语法虽然庞大但你在写任何程序时脑子里只要缕清现在输入是什么我要对它做什么结果显示成什么样思路就会清楚很多。输入Input程序从外部获取数据比如键盘输入、读取文件、监听鼠标事件。零基础阶段最常用的是input()。处理Process对数据做运算、判断、转换。涉及运算符、流程控制、循环函数等。输出Output把结果展示给用户最常用的是print()。本篇要讲的输入输出就是第一块和第三块流程控制和循环语句则是第二块里最核心的内容。把这三块拼图的关系理解清楚你会发现Python的很多知识点其实都能对号入座不会东学一块西学一块学完就忘。3. 输入输出程序与用户的对话窗口3.1 input()程序听用户说话input()函数的功能非常简单在屏幕上显示一段提示文字然后等待用户从键盘输入内容按回车后把输入的内容作为字符串返回给程序。name input(请输入你的名字) print(你好 name)运行这段代码屏幕上会出现请输入你的名字等你输入比如张三并按回车就会输出你好张三。很多新手在这里会犯一个经典错误直接用input()拿到的内容做数学运算。比如age input(请输入你的年龄) print(明年你 age 1 岁)这一跑就报错。原因在于input()返回的永远是字符串字符串不能和数字直接相加。字符串18和数字1做运算Python会直接抛出一个类型错误。正确的做法是转换类型age input(请输入你的年龄) age int(age) # 把字符串转成整数 print(明年你 str(age 1) 岁)或者更简洁的方式直接用f-string格式化后面会细说age int(input(请输入你的年龄)) print(f明年你{age 1}岁)实战心得int()只能转换纯数字组成的字符串如果你输入18岁这种带单位的内容转换会报错。所以在用input()接收数字时要么提示语写清楚请输入数字要么用异常处理来兜底。异常处理是后面的话题这里先记住这个坑就行。3.2 print()程序说话的方式print()的用法非常多别小看这个函数它贯穿整个Python生涯。最基本的就是直接输出括号里的内容括号里可以放字符串、数字、变量还可以放多个值用逗号隔开。print(hello) print(3.14) print(我的名字是, name, 今年, age, 岁)注意逗号分隔的多个值在输出时中间会自动加一个空格。这个空格是print()的默认行为如果你不想要空格可以用sep参数改掉print(2024, 10, 01, sep-) # 输出2024-10-01print()默认在末尾会加一个换行符所以每次调用都会换行。如果不想换行把end参数设置为空字符串即可print(第一行, end) print(第二行) # 输出第一行第二行这个技巧在写进度条、逻辑输出同一行内容时很常用。新手阶段可能体会不深但先记住sep和end这两个参数之后用到时你会感谢现在的自己。3.3 字符串格式化从加号拼接到f-string输出内容时经常需要把变量值嵌进字符串里。如果不格式化就得不断用拼接又啰嗦又容易出错name 李四 score 95 print(学生 name 成绩 str(score))这种写法有三个痛点括号容易漏、转换类型容易忘、字符串一长就眼花缭乱。Python提供了三种更优雅的格式化方式第一种百分号格式化print(学生%s成绩%d % (name, score))%s表示字符串占位%d表示整数占位后面跟着的括号里按顺序填变量。第二种format()方法print(学生{}成绩{}.format(name, score))花括号就是占位符会自动按顺序填入。还可以给花括号加数字用{0}{1}指定位置来回挪位置也不用改参数。第三种f-string强烈推荐Python 3.6以后引入了f-string我个人只用这一种简洁直观print(f学生{name}成绩{score})前面加一个小写的f字符串里用花括号包住变量名程序运行时会把变量值直接替换进去。它甚至支持在里面写表达式print(f{score} 分及格线是 60 分差 {score - 60} 分)三种方式你只要掌握f-string即可因为它是目前最强可读性最高的方案代码里它出现得也最频繁。另外两种知道能看懂就行。4. 流程控制让程序学会看情况办事4.1 if / elif / else分支判断的完整套路程序不是永远从上到下顺序执行的有时需要根据不同的条件走不同的分支。这就是流程控制里的 if判断。Python的条件判断语法非常简单score int(input(请输入分数)) if score 90: print(优秀) elif score 60: print(及格) else: print(不及格)语法结构拆开看就是三部分构成if后面跟条件表达式条件为真就执行它下面缩进的代码块。elif是 else if 的缩写意思是上面的条件不满足再看看这个条件是否满足。可以写多个。else是最后的兜底所有条件都不成立时执行可省略。执行逻辑是自上而下依次判断先看score 90为真就执行并跳过后面所有判断如果不为真再看score 60如果还不为真进入else。只要满足一个分支就结束整个判断这个逻辑务必记牢它能避免很多逻辑混乱。新手容易在这里犯一个错误在if后面对多个条件分别用独立的if导致程序执行了好几个分支。比如if score 90: print(优秀) if score 60: print(及格) if score 60: print(不及格)这段代码结果看似正确但逻辑上已经不是互斥的了。假设score是95它会打印优秀然后还会继续走到第二个if打印及格。如果业务逻辑是一档一档地评等级这种写法就完全不适用。所以记住互斥的分支判断用 if / elif / else不要用多个单独的 if。4.2 逻辑运算符多个条件一起判断实际情况中一个判断里经常需要同时满足或者满足其一。这时候就需要逻辑运算符来组合条件and两边都为真才返回真or至少有一边为真就返回真not取反比如判断一个成绩是否合法在0到100之间if score 0 and score 100: print(分数合法) else: print(分数不合法)判断是否满足奖学金条件成绩90以上或者成绩80以上且考勤满勤if score 90 or (score 80 and attendance 95): print(获得奖学金)这里要注意括号的使用。Python运算有优先级notandor。所以score 90 or score 80 and attendance 95实际上是score 90 or (score 80 and attendance 95)但为了可读性强烈建议显式加上括号不然后面自己回头看代码都得反应半天。4.3 嵌套与三元表达式简化你的代码结构条件判断里面可以再写条件判断这就是嵌套。但嵌套层次越多代码越难读。我记得自己入门时写过四层嵌套的判断过了一星期自己看都不知道在干嘛。这里有一个原则尽量用 elif 摊平判断层级或者用提前返回的方式减少嵌套。一个简单的嵌套例子if gender 男: if age 18: print(成年男性) else: print(未成年男性) else: if age 18: print(成年女性) else: print(未成年女性)这个例子可以改成更扁平的结构但仅供参考不一定更清晰if gender 男 and age 18: print(成年男性) elif gender 男 and age 18: print(未成年男性) # ...还有一种写法叫三元表达式它能把简单的 if/else 压缩成一行status 成年 if age 18 else 未成年它的格式是A if 条件 else B条件为真取A为假取B。这个写法特别适合赋值时做一个简单的二选一判断。但注意过于复杂的逻辑不要硬压缩成一行一行写几十个字的可读性非常差得不偿失。5. 循环语句让程序任劳任怨地重复干活5.1 for循环遍历的利器当需要对一组数据逐个处理时用for循环最方便。它像流水线一样把每个元素依次取出来放到变量里然后执行缩进的代码块。for i in range(5): print(i)这段代码会输出 0 1 2 3 4。range(5)生成一个从0开始、到4结束的整数序列。很多人第一次都会问为什么不是1到5因为Python里范围是左闭右开的也就是包括左边、不包括右边。range()还有两种常用形式range(1, 6) # 从1到5步长默认为1 range(1, 10, 2) # 从1到9步长为2输出1,3,5,7,9除了遍历数字for循环可以遍历任何可迭代对象包括字符串、列表、元组、字典等。比如遍历一个字符串的每个字符word Python for ch in word: print(ch)输出的每一行就是Python。遍历列表里的元素也一样fruits [苹果, 香蕉, 橙子] for fruit in fruits: print(f我吃了一个{fruit})5.2 while循环条件满足就一直做与for循环不同while循环不是按顺序遍历而是只要条件为真就反复执行。它的语法是while 条件: 执行代码块比如打印1加到100的结果total 0 i 1 while i 100: total i i 1 print(total) # 输出5050这段代码里i就是计数器每循环一次加1。当i变成101时条件i 100为假循环结束。while循环最大的风险是死循环——条件永远为真程序永远不结束。比如下面这段i 1 while i 0: print(i) # i一直大于0永远不会退出新手写while时一定要先想清楚循环里必须有让条件最终变为假的语句。大部分死循环就是因为忘写了计数器自增语句或者条件判断写反了。5.3 break 与 continue循环中的急刹车与跳过一个在循环体内部有两个特殊的控制语句break立即终止整个循环不管条件还为不为真。continue跳过本次循环的剩余代码进入下一次循环。比如从1开始找第一个能被7整除的数i 1 while True: if i % 7 0: print(f找到了{i}) break i 1这个while True是故意制造一个无限循环配合break在满足条件时退出是一种很常见的写法。注意break只跳出当前这一层循环如果你在嵌套循环里用break它只会跳出内层循环。再看continue的例子打印1到10之间的所有奇数。for i in range(1, 11): if i % 2 0: continue print(i)i等于2时i % 2 0为真执行continue直接跳到下一个i后面的print(i)不会执行。所以偶数全被跳过了只输出奇数。5.4 循环中的else一个被忽略的小彩蛋Python的循环语句后面居然可以跟else块这个设计很多教程都不讲。它的语义是循环正常结束不是被break打断时执行else块里的代码。for i in range(5): print(i) else: print(循环正常结束)运行结果会是 0 1 2 3 4 之后打印循环正常结束。如果循环里中途break了else块就不会执行。这个特性在查找一个东西是否存在若循环跑完都没找到则提示的场景里很实用。例如判断一个数是不是质数num int(input(请输入一个大于1的整数)) for i in range(2, num): if num % i 0: print(f{num}不是质数能被{i}整除) break else: print(f{num}是质数)这里循环遍历2到num-1之间的所有数检查能否整除。如果中间发现能整除就break掉并说明不是质数。如果整个循环走完都没有发现因子就进入else说它是质数。这个写法比额外定义一个标志变量flag要干净很多也少一行代码。6. 综合实战把三块拼图拼成一个小程序学了语法不用等于没学。我们来做一个经典的综合案例学生成绩管理系统单次运行版。要求连续输入5个学生的成绩判断每个成绩的等级优秀/及格/不及格统计优秀人数、及格人数、不及格人数输出统计结果和平均分完整代码如下total 0 excellent_count 0 pass_count 0 fail_count 0 for i in range(5): score int(input(f请输入第{i 1}个学生的成绩)) if score 90: print(等级优秀) excellent_count 1 elif score 60: print(等级及格) pass_count 1 else: print(等级不及格) fail_count 1 total score average total / 5 print( 统计结果 ) print(f优秀人数{excellent_count}) print(f及格人数{pass_count}) print(f不及格人数{fail_count}) print(f班级平均分{average:.1f})这个程序用到了本篇所有核心语法input()输入、类型转换、for循环、if判断、累加器、f-string格式化。代码虽短但已经是一个有完整逻辑、能处理多条数据、输出报告的实用工具了。运行一次输入五个成绩输出应该是这样的效果假设输入80、95、45、70、60请输入第1个学生的成绩80 等级及格 请输入第2个学生的成绩95 等级优秀 ... 统计结果 优秀人数1 及格人数3 不及格人数1 班级平均分70.0写这个例子的时候我想强调一个思路拿到一个需求先不要急着写代码先想清楚我需要哪些变量哪些操作会重复哪些判断要注意优先级。这个思考过程比代码本身重要一百倍。很多同学一上来就写结果写着写着发现变量名搞混了、逻辑绕晕了这就是典型的没有顶层设计。7. 新手常见报错与排查速查表7.1 最常遇到的三个报错IndentationError: unexpected indent这个报错几乎每个Python新手都见过。Python用缩进表示代码块缩进必须一致。同一层次的代码块要么都用4个空格要么都用Tab不要混用更不要忘记缩进。if True: print(hello) # 这一行没有缩进报错解决方案很简单检查代码块内的代码是否都在同一层级缩进数量是否一致。建议IDE里开启显示空格功能方便肉眼排查。TypeError: can only concatenate str (not int) to str这个报错出现在字符串和数字用拼接的时候。解决办法把数字转成字符串str(age)或者直接使用f-string让Python自动处理。ValueError: invalid literal for int() with base 10这个报错出现在int()转换非数字字符串的时候。比如用户输入了abc你直接用int(abc)必然报错。最简单的兜底办法是在转换前加一个判断但更规范的方式是用后面要学的异常处理机制。现阶段你只需要在提示语中明确要求用户输入数字即可。7.2 逻辑报错程序跑通但结果不对比报错更让新手头疼的是程序不报错就是结果不对。典型的有这么几种忘记把累加器写在循环内导致只加了一次或者累加值翻倍。if分支顺序写反了导致条件范围互相覆盖。比如先判断score 60再判断score 90那么60以上的所有分数都会命中第一个分支第二个分支永远不会执行。range(1, n)误以为会包含n导致少算一次。记得range是含头不含尾。用if代替elif导致多个分支同时执行。排查逻辑错误有一个很实用的方法在关键位置加print()打印中间变量值。比如循环里每加一次就打印一下i和total的值很快就能锁定是哪里出了问题。这个 print调试法 虽然原始但在小项目里比任何调试器都高效。7.3 易混淆语法小抄我把新手阶段最容易记混的语法整理成一个小表格建议截图保存语法写法常见误区判断相等if x 5写成if x 5在Python里直接报语法错赋值x 5与判断相等混淆不等于if x ! 5有些老语言写!Python只认!逻辑且and忘记加括号导致优先级混乱循环范围range(1, 6)含1不含6误以为输出1到6print不换行print(x, end)忘记end参数就默认换行了三元表达式A if 条件 else B把A和B的位置写反8. 一些我的个人体会我带过不少零基础的朋友学Python也常年看到各种学了两周就放弃的案例。其实大部分放弃不是因为Python难而是因为学的时候太赶进度——总想快点学完语法快点学框架快点做项目结果基础概念没有内化写出来的代码四面漏风遇到难题就彻底失去信心。就说输入输出、流程控制、循环这三样真要彻底掌握我建议你别只跟着教程看一遍就完事而是要自己动手写至少三遍第一遍照着写第二遍关掉教程凭记忆写第三遍给自己加需求改造一下比如把成绩统计从5个学生改成任意数量、把等级划分标准改一改。三遍下来这些语法就真正长在你脑子里了。还有一个小技巧在循环里故意制造一些小状况来加深理解。比如初始化一个变量为0在循环里自增观察它怎么变化的或者在while循环里忘写i 1看它是不是真的死循环记得按CtrlC强制终止。亲手把bug玩出来比躲着bug跑要学得更快——踩过的坑多了下次遇到就知道怎么避开。最后再说说代码风格。入门阶段就要养成好习惯变量名别用a、b、c这种无意义字符尽量用score、total、count这种见名知意的词函数和模块命名用全小写加下划线代码缩进统一用4个空格。这些习惯如果你从第一天就开始遵守之后写任何项目都会轻松很多——代码首先是写给人看的其次才是给机器跑的。基础的东西往往最值得反复打磨。把这一篇的三个核心语法练扎实你接下来学函数、学列表推导式、学文件操作就会发现很多东西根本不用死记硬背它们全都是建立在这些基本骨架之上的延伸。祝你能写出自己第一个真正意义上会用逻辑思考的Python程序。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑