Python 入门自测:从语法、变量到函数与错误处理

2026-09-29 23 预计阅读时间: 1 分钟
来源: realpython.com AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:8 分钟

学习 Python 的第一步,不是记住所有语法,而是建立一套能独立编写、运行和排查小程序的基本能力。变量、数据类型、缩进和函数看起来简单,却决定了后续学习 Web 开发、数据分析和自动化脚本时是否顺畅。

下面通过一组自测问题和一个可运行的小程序,检查这些基础是否已经真正掌握。

先确认你会在哪里运行 Python

Python 代码通常有两种运行方式。

一种是在交互式解释器中快速试验:

python --version
python

进入解释器后,可以直接输入:

name = 'Ada'
print(f'Hello, {name}!')

退出时输入 exit(),或者按 Ctrl-D;Windows 命令提示符中也可以按 Ctrl-Z 后回车。

另一种方式是把代码保存为 .py 文件。例如创建 app.py,然后运行:

python app.py

部分系统需要使用 python3:

python3 --version
python3 app.py

编辑器可以使用任何能够保存纯文本的工具。开发时更方便的选择包括带 Python 扩展的 VS Code、PyCharm,或者系统自带的终端与文本编辑器。关键不是工具多复杂,而是能够看见程序输出和完整报错信息。

用几个问题检查核心概念

1. 变量是否需要预先声明类型?

不需要。Python 会根据赋值对象确定变量当前引用的数据类型:

score = 95
student = 'Lin'
passed = True
average = 87.5

print(type(score))    # <class 'int'>
print(type(student))  # <class 'str'>
print(type(passed))   # <class 'bool'>
print(type(average))  # <class 'float'>

不过,“不需要声明”并不意味着可以忽略类型。下面的代码会失败,因为字符串和整数不能直接相加:

age_text = '18'
age_next_year = int(age_text) + 1
print(age_next_year)

在处理命令行输入、表单数据或文件内容时,显式转换类型尤其重要。

2. 缩进只是为了美观吗?

不是。缩进是 Python 语法的一部分,用来界定条件、循环和函数的代码块:

score = 82

if score >= 60:
    print('通过')
    print('可以进入下一阶段')
else:
    print('需要继续练习')

同一代码块应保持一致缩进,通常使用 4 个空格。不要在同一个文件中混用 Tab 和空格,否则可能出现 IndentationError,或者产生难以察觉的逻辑问题。

3. 函数解决了什么问题?

函数把一段操作命名并封装起来,使它可以被重复调用和单独测试:

def calculate_average(scores):
    return sum(scores) / len(scores)

result = calculate_average([80, 92, 88])
print(result)

return 会把结果交还给调用者。只使用 print() 的函数虽然能够显示信息,但不方便其他代码继续处理计算结果。

一个可复制运行的基础练习

下面可以这样实践:编写一个成绩统计程序,同时练习输入、变量、列表、类型转换、缩进、函数和异常处理。

将以下内容保存为 score_app.py:

def parse_scores(raw_text):
    parts = raw_text.split(',')
    scores = []

    for part in parts:
        score = float(part.strip())
        if score < 0 or score > 100:
            raise ValueError('成绩必须在 0 到 100 之间')
        scores.append(score)

    if not scores:
        raise ValueError('至少需要一个成绩')

    return scores


def summarize(scores):
    average = sum(scores) / len(scores)
    passed = average >= 60

    return {
        'count': len(scores),
        'average': average,
        'passed': passed,
    }


def main():
    raw_text = input('请输入逗号分隔的成绩,例如 80, 95, 72:')

    try:
        scores = parse_scores(raw_text)
        result = summarize(scores)
    except ValueError as error:
        print(f'输入错误:{error}')
        return

    print(f"成绩数量:{result['count']}")
    print(f"平均分:{result['average']:.2f}")
    print('结果:通过' if result['passed'] else '结果:未通过')


if __name__ == '__main__':
    main()

运行程序:

python score_app.py

可以分别测试这些输入:

80, 95, 72
80, hello, 72
80, 120, 72

第一组输入会正常计算;第二组在把 hello 转为浮点数时触发 ValueError;第三组则由程序主动拒绝超出范围的成绩。这里的 try/except 并不是隐藏错误,而是把可预期的用户输入错误转换为清楚的信息。

看懂报错比避免报错更重要

初学 Python 时,报错是最有价值的反馈之一。遇到异常时,可以按下面的顺序阅读 traceback:

  1. 先看最后一行,确认异常类型和错误说明,例如 NameError、TypeError 或 ValueError。
  2. 再看指向自己文件的行号,而不是先研究 Python 内部文件。
  3. 检查变量名、实际数据类型、缩进和函数参数。
  4. 用 print() 或交互式解释器验证一个更小的表达式。

几个常见错误分别说明不同问题:

  • SyntaxError:代码结构不符合语法,例如漏掉冒号或括号。
  • NameError:使用了尚未定义或拼写错误的名称。
  • TypeError:对某种对象执行了不支持的操作。
  • ValueError:对象类型可以接受,但具体值不合法。
  • IndentationError:代码块缩进不正确或不一致。

基础是否过关,可以看这份清单

如果你已经能够完成下面这些动作,就具备继续学习 Python 的基础:

  • 能从终端确认 Python 版本并运行 .py 文件。
  • 能解释 str、int、float、bool 和 list 的基本用途。
  • 知道 input() 返回字符串,必要时会使用 int() 或 float() 转换。
  • 能使用正确缩进编写 if、for 和函数。
  • 能区分 print() 与 return。
  • 遇到错误时会阅读异常类型和行号,而不是立即重写整个程序。
  • 能为非法输入给出明确反馈,同时避免用过宽的 except Exception 掩盖未知问题。

下一步可以在这个成绩程序上继续增加等级划分、文件读取或自动化测试。每次只添加一个功能,并在修改后立即运行,这比一次堆叠大量新语法更容易建立可靠的编程习惯。


相关推荐