news 2026/4/27 5:54:31

Python新手在PyCharm写if总报错?5个坑90%人踩过,看完修复

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python新手在PyCharm写if总报错?5个坑90%人踩过,看完修复

前言

写Python的if语句时,新手常踩5个坑:忘写冒号、缩进不对、用了中文标点、条件写反了、变量没定义。PyCharm报错变红别慌,看懂提示就能改。本文手把手教你识别这些错误,让你告别代码一运行就崩溃的绝望

if 语句的概述?

if语句是代码的"分岔路口":条件成立就执行,不成立就走else。它让代码会"思考",是实现登录验证、库存提醒等功能的基础,也是从简单脚本到复杂程序的必经之路。

准备工作:在Pycharm中创建 Python 文件

打开 PyCharm 后,你会看到如下图所示的启动界面。

这时候你有两种选择来创建 Python 文件。

第一种方式:先新建项目(Project),然后在项目里新建 .py 文件并命名。

第二种方式:在已有项目中直接新建 .py 文件并命名。

如果你不会创建.py文件,请阅读如下文章。
如何使用PyCharm?0基础新手必看!七大核心功能+越用越有意思

这两种方式有什么区别吗?

先建项目 = 搭完整仓库,有独立环境,适合正经开发或系统学习。直接加文件 = 随手记笔记,适合快速测试代码。给.py文件和项目文件夹起名时要见名知义,如"python爬虫"别叫"aaa",方便后期查找。

接下来,我带大家熟悉一下 PyCharm 的使用界面。具体的功能区域介绍请参考下面这两张示意图,我在图中讲解每个区域的作用。

if 语句入门

语法讲解

if条件表达式:# 条件为真时执行的代码语句块

Python中if语句格式:if 条件:后接缩进代码。条件为真则执行,为假则跳过。冒号不可少,缩进区分代码块,是Python特有语法。

例子:判断手机电量是否充足

我用一个超简单的例子带你看懂,你也可以跟着敲一遍。

battery=50#先定义变量,把值50赋给定义好的变量,为了表示当前手机电量ifbattery>0:#然后判断定义后的变量的值是否大于0,即判断手机电量是否大于0print("手机电量充足。")#如果满足定义好的变量的值大于0的条件,即满足手机电量大于0,那么就显示手机电量充足。

运行结果如下图所示。

把battery改为0时条件不成立,如下图所示,代码跳过无输出。

避坑指南(新手必看)

先定义变量且给变量赋值;if小写;条件后加冒号;语句缩进;相等用==。

条件二选一:if 与 else

语法讲解

想象你在玩一个"二选一"的游戏:如果满足某个条件,就做A事;否则就做B事。Python里的if和else就是这个逻辑。

基本结构长这样:

if条件:执行这里(条件为真时)else:执行这里(条件为假时)

什么是布尔值? 就是"真"或"假":True(真)或False(假)。比如age >= 18这个判断,结果要么是真(成年了),要么是假(未成年)。

下面我举例子来讲解if-else,你也可以跟这敲一下代码并试着运行。

例子:今天要不要带伞?

# 定义一个变量,存储天气情况,变量类型为字符串weather="下雨"# 判断:weather是否是"下雨"?== 表示"等于",用来比较两个值是否相同ifweather=="下雨":print("记得带伞出门!")# 如果条件成立(为真),执行这行代码,前面有4个空格缩进else:print("今天不用带伞。")# 如果条件不成立(为假),执行这行代码

运行结果如下图所示。

试试把 weather = “晴天”,看看会打印哪句话?

改变量看效果: 把weather = "下雨"改成weather = “晴天”,如下图所示,程序就会跳过if下面的代码,直接去执行else下面的print(“今天不用带伞。”)。

避坑指南(新手必看)

忘记冒号:if和else行尾必须有英文冒号:,写成分号;或中文冒号:都会报错。

缩进错误:这是新手最常犯的错!print前面一定要有空格(按一下Tab键或4个空格),不能顶格写,也不能和if对齐。

else单独写:else前面必须有对应的if,不能孤零零自己存在。

混淆=和==:= 是用来给变量赋值的(如age=20),==是用来判断是否相等的(如age == 20),判断条件时用错程序会出bug。

条件表达式:除了比较数字,还能判断字符串、布尔值等,只要结果是True或False都行。

记住:if是入口,else是备胎,缩进是生命线!

多分支判断:if-elif-else

语法讲解

Python条件判断让程序"看情况办事"。if意思是"如果",条件成立就执行代码。elif是"否则如果",前面不满足时判断新条件。else是"否则",前面都不满足时执行。Python用缩进(4个空格)区分代码块。

if-elif-else的基本结构如下。

if条件表达式:# 条件为真时执行的代码语句块elif条件表达式:#上述条件不满足,这个条件却满足执行的代码语句块else:#上述所有条件都不满足的代码语句块

下面我通过例子来讲解if-elif-else,你可以手敲代码并试着运行。

案例:学生成绩评级

my_score=85# 定义变量来存储分数ifmy_score>=90:# 判断≥90?85不满足print("你的成绩优秀")# 跳过elifmy_score>=80:# 判断≥80?满足!print("你的成绩良好")# 执行这行elifmy_score>=60:# 已经满足,跳过print("你的成绩及格")else:# 已经满足,跳过print("你的成绩不及格")

流程:85分问"够90?"不够→"够80?“够了→打印"良好”,后面停止。运行结果如下图所示。

避坑指南(新手必看)

必须缩进。
判断用==不是=。
elif不能写成else if。
小范围条件放前面。
别忘了冒号:。

避坑指南:if 语句 5 大常见错误

遗漏末尾的冒号 :

如下图所示,未在if 条件表达式后面加冒号,会出现SyntaxError错误。

应该在if 条件表达式后面加冒号,如下图所示。这一点新手写代码着急时容易忘。新手应该在if 条件表达式写完后检查冒号是否加了。

IndentationError: 缩进错误

如下图所示,在if 条件表达式下面执行的语句的前面没有缩进,直接报IndentationError错误。

Python 靠缩进区分代码块。这一点新手容易忽略,怎么办?没事,等打完if语句代码后用快捷键Ctrl + Alt + L自动格式化代码。

中英文标点混用

如下图所示,if 条件表达式后面的冒号是中文标点符号,不是英文标点符号,就报SystaxError错误。

这是新手打代码时常犯的错误。怎么预防呢?等分别打完if 条件表达式和冒号后,检查冒号下面是否有红波浪线,如果有,那么红波浪线就是中文标点符号,否则就是英文标点符号。

条件判断逻辑颠倒

如下图所示,if后面的条件表达式逻辑混乱,所以没有输出结果。

把if后面的条件表达式的逻辑校正后如下图所示。

新手打代码时急于验证功能,没有检查意识,所以就把if后面的条件表达式的逻辑颠倒了。这怎么避免呢?我就是在打完if 条件表达式后,检查一下条件表达式的逻辑,或者大声朗读if 条件表达式的代码,这样就不会出现条件表达式逻辑颠倒的问题了。新手可以用我的方法试试。

变量未声明就调用

如下图所示,没有定义变量就进行if条件判断,会出现NameError错误。

在if语句前,加上定义变量的语句,运行后如下图所示。

新手打代码时,想到哪打哪,没有顺序思维,所以就容易犯变量未定义就进行判断的错误。这怎么杜绝呢?新手打代码前,应该先构思如何先声明后使用的顺序编打代码,然后检查一下代码是否按先声明后使用的顺序打。或者新手先写完所有的变量声明,再写逻辑。

总结

本章详解if、if-else、if-else-elif语法,盘点新手写if语句5大易错点:缩进错误、变量未定义、遗漏冒号、中英文标点混用、条件逻辑颠倒,附避坑指南。建议新手多敲多练,熟能生巧。

相关阅读

如果你对库存管理和开发库存管理系统感兴趣,那么请阅读以下文章。
Python新手&库管:IF语法实战终结金额出库库存3错

专栏下篇剧透:在PyCharm写Python字典:新手必避7大坑

专栏下篇预告:《在PyCharm写Python字典:新手必避7大坑》。

如果你觉得本文有用,那么请你动一动你宝贵的手指进行点赞、收藏、关注。我将持续更新PyCharm实战内容+Python基础语法痛点突破的干货,带你少走弯路。如果你有疑问,那么欢迎你在评论区留言。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 5:49:51

为什么快充桩用直流、慢充桩用交流?—— 新能源汽车充电原理全解析【车规级 + CAN 总线实战】

目录 0 前言 1 核心铁律:动力电池只能接受直流电 2 交流慢充(家用 / 小区):转换在车,小功率护电池 2.1 工作流程 2.2 为什么慢充用交流? 2.3 交流慢充特点 3 直流快充(高速 / 场站):转换在桩,大功率直充电池 3.1 工作流程 3.2 为什么快充必须用直流? 3.3 直…

作者头像 李华
网站建设 2026/4/27 5:49:44

ACM周报5

牛客周赛140:B题:s.find(m)时间复杂度是O(m)的,所以可能超时,可以用栈模拟,从后往前D,E题:本质是连通块问题,可以将所有ix和iy不超过n的位置放入一个集合中,用并查集实现&#xff0c…

作者头像 李华
网站建设 2026/4/27 5:49:20

【vllm】(二)vLLM v1 Engine — 模块超深度逐行分析之三

3.10 core.py - 引擎核心文件职责: 实现vLLM推理的"内循环"——调度→执行→更新,这是GPU推理的真正驱动者。 3.10.1 EngineCore.init() 初始化流程 逐行解析: 加载插件: load_general_plugins() — 允许第三方插件注册创建ModelExecutor: exe…

作者头像 李华
网站建设 2026/4/27 5:48:24

上海装修公司前十强环保装修避坑指南

历时15个月,覆盖上海16区,基于2147家合规装企、2100余位竣工业主深度回访,严选10家环保装修标杆,附赠环保避坑实操指南第一章:引言——“环保装修,不是喊口号,而是守住家的健康底线”“装修完入…

作者头像 李华
网站建设 2026/4/27 5:48:19

面试题:@Controller 与 @RestController 区别

Controller 与 RestController 注解详解与区别(Spring Boot 面试必背) 前言 在 Spring Boot / SpringMVC 后端开发中,Controller 与 RestController 是最基础且高频使用的控制器注解,也是初级后端面试中必考的知识点。很多初学者容…

作者头像 李华
网站建设 2026/4/27 5:47:24

豆包AI模拟面试官,提示词迭代记录

引言 某招聘软件的AI面试,问题死板、数量固定、中途打断、随意打分,和真实面试完全不是一回事。所以我用豆包AI提示词,自己做了个能模拟真实面试的AI面试官。 文档目的 我突然想到这个点子之后,实际使用一次后感觉效果极好&#x…

作者头像 李华