摘要:本章将带你认识 Python 程序的基本组成元素,学习如何实现与用户的交互输入输出。
第四章 程序组成与输入输出
程序并不是由零散语句拼凑而成的,它有自己的结构层次和逻辑关系。
本章将带你认识 Python 程序的基本组成元素,学习如何实现与用户的交互输入输出。
学习目标:
(1)理解 Python 程序的层次结构及组成元素。
(2)掌握变量、字面量、表达式、语句、模块等核心概念。
(3)学会使用 input 与 print 实现输入与输出。
(4)了解 eval 及相关安全用法。
(5)能编写带交互的小程序,完成简单数据处理与结果展示。
4.1 Python 程序的组成元素
程序由一系列元素构成,它们共同定义了数据、操作、逻辑与结构。
理解这些元素,就能从整体上把握 Python 程序的编写方式。
4.1.1 变量与字面量
变量(variable)是程序中用于引用对象的符号名称。它本身并不直接存储数据,而是指向内存中的某个对象。
字面量(literal)则是直接出现在代码中的具体值,每个字面量在执行时都会创建一个对应类型的对象。
# 变量赋值x = 10y = 3.14name = "Python"# 字面量:10、3.14、"Python" 都是不同类型的对象print(x, y, name)1、变量名引用对象
上例中,在执行 x = 10 时,Python 会先在内存中创建一个整数(int)对象 10,再让变量名 x 指向它。若重新赋值,x 将指向新的对象。
2、Python 是动态类型语言
变量在赋值时才确定所引用对象的类型,不需要提前声明。
3、可通过内置函数 查看对象类型。
x = 10print(type(x)) #print(type(10)) #print(type(3.14)) #print(type("Python")) #4.1.2 表达式
表达式(expression)是由变量、字面量、运算符、函数调用等构成的语法结构,用于计算并产生结果。
a = 5b = 2c = (a + b) * 3 # 表达式print(c)表达式计算得到的结果也是一个对象,可以被赋值、输出或作为参数传入函数。
4.1.3 语句
语句(statement)是程序执行的最基本单位。表达式产生值,而语句执行操作。一个语句可能包含一个或多个表达式。
Python 提供了多种语句类型,可分为简单语句与复合语句两大类。
1、简单语句
简单语句通常占据一行,只执行单一操作。
Python 中的简单语句有:赋值语句、表达式语句(通常为函数调用)、import 语句、pass 语句(占位语句)、del 语句、return 语句,等等。
# 赋值语句示例# 1. 单变量赋值x = 10 # 将整数 10 赋值给变量 xy = "Python" # 将字符串 "Python" 赋值给变量 yprint(x, y) # 输出:10 Python# 2. 多变量同时赋值a, b, c = 1, 2, 3 # 依次将 1、2、3 赋值给 a、b、cprint(a, b, c) # 输出:1 2 3# 3. 变量值互换a, b = b, a # 无需中间变量,直接交换 a 与 b 的值print("交换后:", a, b) # 输出:交换后: 2 1提示:
重新给变量赋值并不会修改原对象,而是让变量名指向新的对象。
2、复合语句
复合语句包含一个或多个子语句块(block),通常以冒号 : 结尾并通过缩进表示层级。
Python 中常见的复合语句有:if 条件语句、for 循环语句、while 循环语句、try 语句(异常处理)、def 语句(函数定义)、class 语句(类定义),等等。
# for 循环语句示例for i in range(3):print("循环中:",end="")print(i)print("循环结束")缩进层次决定结构关系,是 Python 程序结构的核心。
4.1.4 脚本与模块
Python 源文件以 .py 结尾,既可以作为脚本(script)直接运行,也可以作为模块(module)被导入使用。
一般来说,脚本用于直接执行任务,而模块用于被其他程序调用和复用。
脚本指的是可以直接执行的程序文件。
# hello.pyprint("你好,Python!")运行:
python hello.py模块指的是为了复用功能而编写的 Python 文件。
任何 .py 文件都可以成为模块,只要通过 import 导入即可。
# tools.pydef greet(name):print(f"你好,{name}!")导入并使用该模块:
# utilize.pyimport toolstools.greet("小明")有三种基本用法:
(1)import 模块名:导入整个模块。
(2)from 模块名 import 函数名:只导入其中某个函数。
(3)import 模块名 as 别名:为模块取别名,便于调用。
import mathprint(math.pi) # 输出 3.141592653589793from math import sqrtprint(sqrt(16)) # 输出 4.0import math as mprint(m.degrees(m.tau)) # 输出 360.0提示:
解释器会在当前目录、PYTHONPATH、以及安装目录的 site-packages 中查找模块。
4.1.5 程序与项目结构
程序(program)是为完成特定任务而编写的代码集合。项目(project)指的是一个完整的软件工程集合,既包含源代码,也包含构建、测试、文档与配置等配套内容。
程序示例:
# main.py# 导入模块import math# 定义部分:函数或类的定义def area_of_circle(r):return math.pi * r ** 2# 执行部分:主程序逻辑,也称“顶层代码”或“main 模块的执行逻辑”r = float(input("请输入半径:"))print("圆的面积为:", area_of_circle(r))一个完整的程序通常由导入、定义以及执行三大部分构成。
定义部分(函数、类定义等)通常称为声明区域(definition section),执行部分则称为主逻辑区(execution section)。
提示:
Python 文件在被直接运行时,其顶层代码会按顺序执行;若作为模块被导入,则顶层代码不会自动运行。
这种机制使得同一个文件既可独立运行,也可被复用。
项目结构示例:
project_name/│├── main.py # 主程序入口├── utils.py # 工具函数模块├── data/ # 数据文件夹│ └── dataset.csv├── models/ # 模型或算法模块│ └── linear_model.py└── requirements.txt # 依赖清单这种分层结构便于协作、维护和扩展。
Python 通过模块化编程与 import 机制,让项目能够像积木一样灵活组合。
4.2 程序的输入与输出
程序的核心在于交互:输入数据、处理逻辑、输出结果。
Python 提供了简洁易用的来完成输入与输出操作。
4.2.1 输入函数 input
用于从键盘获取用户输入,返回字符串类型(str)。
语法结构:
input([prompt])
prompt 参数用于显示提示信息,可以缺省。
# 1. 有提示信息的输入name = input("请输入你的姓名:")print("你好,", name)# 2. 无参数时直接等待输入msg = inputprint("你刚才输入了:", msg)# 3. 数值输入需进行类型转换age = int(input("请输入你的年龄:"))height = float(input("请输入身高(米):"))print("身高与年龄:", height, "米", age, "岁")提示:
input 默认返回的是字符串。若需参与计算,最好显式转换类型。
4.2.2 表达式求值函数 eval
计算字符串形式的 Python 表达式并返回结果。
语法结构:
eval(expression)
expression 参数不可缺省,且必须为字符串。
# 1. 计算输入表达式的结果expr = input("请输入一个算式(如 2+3*4 ):")result = eval(expr) # 仅限可信输入print("计算结果为:", result)# 2. 无参数时(错误示例)# eval # 会报错:TypeError: eval missing 1 required argument提示:
eval 会执行任意代码,存在安全风险。推荐使用更安全的第三库替代方案,如 或 。
from simpleeval import simple_evalresult = simple_eval(expr)4.2.3 输出函数 print
用于将一个或多个对象输出到终端或标准输出设备。
语法结构:
print(*objects, sep=' ', end='\n')
sep 参数用于设置输出对象间的分隔符,默认为空格 ' '。
end 参数用于设置结尾字符,默认为换行 '\n'。
# 1. 基本输出print("Hello, Python!")# 2. 无参数输出(换行)printprint("这行文字会在空行之后显示。")# 3. 多对象与分隔符print("2025", "04", "20", sep="-") # 输出:2025-04-20# 4. 不换行输出print("加载中", end="...") print("完成")print 可以通过多种方式实现格式化输出:百分号格式化、str.format 方法和 f-string等。
# 1. 百分号格式化print("姓名:%s,年龄:%d" % ("Alice", 20))# 2. format 方法print("姓名:{},年龄:{}".format("Alice", 20))# 3. f-string(推荐)name, age = "Alice", 20print(f"姓名:{name},年龄:{age}")4.3 综合示例与应用
学习完输入与输出后,我们即可编写完整的交互程序。
例 4.3.1几何体体积计算器
通过输入圆柱体的半径和高,计算其体积。
# 计算圆柱体的体积:V = π * r^2 * himport math # 导入数学库以使用 π# 输入半径和高r = float(input("请输入圆柱体的半径:"))h = float(input("请输入圆柱体的高:"))# 计算体积v = math.pi * r ** 2 * h# 输出结果(保留两位小数)print("圆柱体的体积为:", round(v, 2))运行示例:
请输入圆柱体的半径:3请输入圆柱体的高:5圆柱体的体积为:141.37例 4.3.2 表达式求值器
输入一个数学表达式并计算结果。
# 计算输入的算式结果from simpleeval import simple_evalexpr = input("请输入一个算式(如 2+3*4 ):")# 使用 simpleeval 库的 simple_eval 函数result = simple_eval(expr)print("计算结果为:", result)运行示例:
提示:
应事先在终端窗口安装第三方库,例如:
pip install simpleeval例 4.3.3 关键词统计器
统计用户输入中指定关键词出现的次数。
# 模拟文本分析:统计关键词出现次数text = input("请输入一句话:")key = input("请输入要统计的关键词:")count = text.count(key)print("关键词出现次数:", count)运行示例:
请输入一句话:AI is changing the world, AI is everywhere.请输入要统计的关键词:AI关键词出现次数: 2此程序模拟最基础的文本分析过程,是自然语言处理(NLP)的入门思维。
小结
本次课介绍了 Python 程序的结构组成与交互功能。学习了变量、表达式、语句、模块等基本元素,掌握了输入、表达式求值与输出的常用函数,并能通过综合示例完成简单的信息处理与展示。
下一次课,我们将进一步学习程序的控制结构,让代码能够根据条件与逻辑做出判断与选择。
“点赞有美意,赞赏是鼓励”
来源:棋泽教育