中国电子学会青少年软件编程等级考试
编程环境
python语言的特点
- python是面向对象的程序设计语言
- python支持多个操作系统的
- python是一种动态数据类型程序设计语言
- python是一种解释型程序设计语言
名词解释
解释器:Python解释器是一种执行Python代码的软件程序,负责逐行读取、解析并执行用户编写的Python指令,将代码编译为字节码后执行
编译器:编译器是将高级语言源代码**(如C/C++)一次性翻译为机器可执行的低级语言目标代码(机器码/汇编)的程序
调试器:用于基础断点调试,(内置pdb)
集成开发环境:又称为IDE,是为开发者提供的一体化软件套件,集成编码、调试、编译、版本控制等工具
开发环境:开发环境是涵盖软件开发全流程所需工具与资源的集合,包括硬件、操作系统、语言工具链、协作系统等
python安装与版本
python2与python3
-
两个版本不兼容,2.x版本的代码需要修改才能在3.x版本上运行
-
目前python的发展方向向着3.x.x的方向发展
-
查询版本号:python -V (V需要大写)
32位(x86)与64位(x64)
多少多少位是指CPU能同时处理多少位的数据,例如64位就2^64
2.安装python
常见开发环境
- 海龟编辑器
- Mu Editor
- Visual Studio code
- Jupyter Notebook
- PrCharm
- IDLE
- …
IDLE编辑器
IDLE是安装python后自带编辑器
IDLE需要掌握的操作
- 新建文件
- 保存文件
- 编辑代码
- 运行代码
- 会切换模式
(需要自己多多练习)
IDLE的两种模式
- 【Shell】命令行模式:用于逐行执行代码。
- 【Edit】编辑模式:用于编写多行的程序,需要保存文件。
程序编写基本的方法
格式要求
- 缩进用来表示代码执行的层级关系(每级缩进使用4个空格)
- 单行长度尽量不超过79个字符,超长时用括号换行,并对齐首字符或使用4空格悬挂缩进
# 括号内换行对齐
result = (value1 + value2
- value3)
-
运算符两侧尽量加空格:x = y + 1
-
单行注释:用 # 开头 # 注释内容
-
多行注释:
def add(a, b):
"""计算两数之和。
参数:
a (int): 第一个加数
b (int): 第二个加数
返回:
int: 相加结果
"""
return a + b -
字符串标识:单引号(’ ') 双引号(" ") ,下面的特殊用法要分清!不要和多行注释混淆
a ="""
使用 3 个双引号分别作为注释的开头和结尾
可以一次性注释多行内容
这里面的内容全部是注释内容
""" -
符号都要用英文的符号
编程基础
输出语句 print()
语法:print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
*objects
:任意数量对象(自动转换为字符串输出)sep
:对象间分隔符(默认空格),如print(1, 2, sep="|")
→1|2
end
:输出结束字符(默认换行),如print("Hi", end="!")
→Hi!
(不换行)file
:输出目标(默认控制台),可重定向到文件:flush
:强制刷新缓冲区(默认False
),实时输出需设为True
(如进度条)
简单用法:print(内容)
格式化输出
-
连接符 +
a='hi'
print("小明" + a + "你好") -
匹配类型符 % 类似C语言
name,age = '小明',12
print("Name: %s, Age: %d, Score: %.1f" % (name, age, 95.5))
%s 字符串
%d 整数
%.1f 浮点数(小数),数字表示保留小数点后多少位
-
f-string(Python ≥3.6推荐),在字符串前加
f
,变量/表达式用{}
嵌入:name = "Alice"; age = 25
print(f"Name: {name}, Age: {age+5}") # 输出:Name: Alice, Age: 30
print(f"Pi: {3.14159:.2f}") # 保留2位小数:Pi: 3.14
输入语句 input()
**语法:**user_input = input(提示内容)
**注意:**用户输入的内容 始终为字符串类型
查看数据类型的函数:type(数据)
执行流程:
- 程序暂停执行,等待用户输入;
- 用户按回车键后,输入内容以字符串形式返回;
- 程序继续执行后续代码
多值输入与分割处理
若需一次输入多个数据,可用 split()
分割字符串,结合 map()
批量转换类型:
# 示例:输入 "10 20 30",按空格分割并转为整数列表
nums = list(map(int, input("输入三个数(空格分隔):").split()))
# 或直接解包赋值
a, b, c = map(float, input("输入三个浮点数(逗号分隔):").split(','))
split()
默认按空格分割,可指定分隔符如 split(',')
变量
变量的本质
- 变量是数据的标签(引用),指向内存中存储的值,无需声明类型,赋值即创建
- 动态类型:变量类型由赋予的值自动推断,可随时重新赋值为不同类型
x = 10 # x 为整数(int)
x = "Python" # 重新赋值为字符串(str)
变量作用域
- 局部变量:在函数内部定义,作用域仅限于函数内
- 全局变量:在函数外定义,需用
global
关键字在函数内修改
global_var = 20
def modify():
global global_var
global_var = 30
赋值
-
单数据赋值
a=1
-
多数据赋值
a, b, c = 1, 2, "text"
-
链式赋值:
a = b = c = 0
-
快速交换变量值:
a, b = b, a
注意:不要混淆 =
(赋值)和 ==
(比较)
变量名命名规则
强制规则
-
组成字符:字母(a-z, A-Z)、数字(0-9)、下划线
_
,不能以数字开头 -
区分大小写(如
name
和Name
不同) -
禁止使用关键字(如
if
、for
、class
)
import keyword
print(keyword.kwlist) # 查看所有关键字/保留字
命名规范
-
变量名:小写字母 + 下划线分隔(蛇形命名法),如
student_name
-
常量名:全大写,如
MAX_SIZE
-
类名:首字母大写的驼峰式,如
ClassName
-
避免:单字符名(除简单循环变量)、内置函数名(如
list
、str
)
数据类型
向变量中存放的东西叫数据,Python 数据类型分为基本类型和复合类型,通过 type()
函数可查看类型。
- 基本数据类型
类型 | 描述 | 示例 | 特性 |
---|---|---|---|
int |
整数(无大小限制) | x = 42 |
支持算术运算 |
float |
浮点数(小数) | y = 3.14 |
科学计数法(2e5 ) |
str |
字符串(文本) | s = "Hello" |
支持切片、格式化 |
bool |
布尔值(逻辑值) | flag = True |
仅 True /False |
- 复合数据类型
类型 | 描述 | 示例 | 特性 |
---|---|---|---|
list |
有序集合 | lst = [1, "a", True] |
支持增删、切片 |
tuple |
不可变有序集合 | tup = (1, 2, "b") |
访问快,内存占用小 |
set |
无序唯一元素集合 | s = {1, 2, 3} |
自动去重,支持集合运算 |
dict |
键值对映射 | d = {"name": "Alice"} |
键必须为不可变类型 |
字符串和数值型变量
数值型变量
用于存储数字,分为整型(int
)、浮点型(float
)和复数型(complex
)
常用操作:
-
算术运算:
+
(加)、-
(减)、*
(乘)、/
(除,返回浮点)、//
(整除)、%
(取余)、**
(幂运算) -
位运算:
|
(按位或)、&
(按位与)、<<
(左移)等
字符串
用于存储文本数据,由字符序列组成,用单引号(''
)、双引号(""
)或三引号(''' '''
)定义,用三引号定义跨行文本
常用操作:
+
拼接("Hello" + "World"
)*
重复("Hi" * 3 → "HiHiHi"
)- 切片
s = "Python"
print(s[1:4]) # 输出:yth(切片)
变量类型转换
使用转换函数可以对数据进行转换
- int()
- float()
- str()
- bool()
- list()
- tuple()
- set()
- dict()
转换函数详解
int(x)
-
功能:将数字字符串、浮点数或布尔值转换为整数。
int("42") # 42(字符串 → 整数)
int(3.99) # 3(浮点数 → 整数,截断小数)
int(True) # 1(布尔值 → 整数)
float(x)
-
功能:将数字字符串、整数或布尔值转换为浮点数。
float("3.14") # 3.14(字符串 → 浮点数)
float(5) # 5.0(整数 → 浮点数)
float(False) # 0.0(布尔值 → 浮点数)
str(x)
-
功能:将任意类型(数值、列表、字典等)转换为字符串。
str(100) # "100"(整数 → 字符串)
str([1, 2]) # "[1, 2]"(列表 → 字符串)
bool(x)
-
功能:将值转换为布尔值(
True
/False
)。 -
规则:
False
:空值(0
、""
、[]
、{}
、None
)。True
:非空值(如1
、"abc"
、[1]
)。
bool(0) # False
bool("Hello") # True
```[2,6](@ref)
list(iterable)
-
功能:将可迭代对象(字符串、元组、集合)转换为列表。
list("abc") # ['a', 'b', 'c'](字符串 → 列表)
list((1, 2)) # [1, 2](元组 → 列表)
```[1,5](@ref)
tuple(iterable)
-
功能:将可迭代对象转换为元组。
tuple([1, 2]) # (1, 2)(列表 → 元组)
```[1,5](@ref)
dict(iterable)
-
功能:将键值对序列(列表元组、嵌套列表)转换为字典。
dict([('a', 1), ('b', 2)]) # {'a': 1, 'b': 2}
```[2,6](@ref)
数学运算
运算符
通过系统掌握这些运算符的分类及特性,可显著提升代码的简洁性与执行效率。建议结合具体场景(如数值计算、条件分支、数据结构操作)深化理解。
- 算数运算符
- 比较运算符
- 赋值运算符
- 逻辑运算符
- 位运算符
- 成员运算符
- 身份运算符
算数运算符
运算符 | 名称 | 示例 | 输出结果 |
---|---|---|---|
+ |
加 | 5 + 3 |
8 |
- |
减 | 8 - 3 |
5 |
* |
乘 | 4 * 3 |
12 |
/ |
除 | 10 / 2 |
5.0 (浮点数) |
% |
取模 | 10 % 3 |
1 |
** |
幂运算 | 2 ** 3 |
8 |
// |
整除 | 10 // 3 |
3 (向下取整) |
注意:除号是这个斜杠 / (向左划下) 不是 \
赋值运算符
为变量赋值或更新值
运算符 | 描述 | 示例 | 等价形式 |
---|---|---|---|
= |
简单赋值 | x = 10 |
- |
+= |
加法赋值(自加) | x += 3 |
x = x + 3 |
-= |
减法赋值(自减) | x -= 2 |
x = x - 2 |
*= |
乘法赋值(自乘) | x *= 2 |
x = x * 2 |
/= |
除法赋值(自除) | x /= 4 |
x = x / 4 |
比较运算符
运算符 | 名称 | 示例 | 结果 |
---|---|---|---|
== |
等于 | 5 == 5 |
True |
!= |
不等于 | 5 != 3 |
True |
> |
大于 | 5 > 3 |
True |
< |
小于 | 3 < 5 |
True |
>= |
大于等于 | 5 >= 5 |
True |
<= |
小于等于 | 3 <= 5 |
True |
注意:
-
比较值并返回布尔值(
True/False
): -
应用:条件判断、循环控制
逻辑运算符
组合布尔条件:
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
and |
与 | True and False |
False |
or |
或 | True or False |
True |
not |
非 | not True |
False |
-
and
:一假即假(短路特性:左侧为假时跳过右侧计算) -
or
:一真即真(左侧为真时跳过右侧计算)
非布尔值规则:
0 and 3
→0
;1 and 3
→3
0 or 4
→4
;1 or 5
→1
位运算符
直接操作二进制位:
运算符 | 描述 | 示例 | 结果(二进制) |
---|---|---|---|
& |
按位与 | 9 & 5 |
1 (00000001) |
` | ` | 按位或 | `9 |
^ |
按位异或 | 9 ^ 5 |
12 (00001100) |
~ |
按位取反 | ~9 |
补码结果 |
<< |
左移 | 9 << 2 |
36 (00100100) |
>> |
右移 | 9 >> 2 |
2 (00000010) |
成员运算符
检测元素是否在序列中:
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
in |
存在于序列 | 2 in [1, 2, 3] |
True |
not in |
不存在 | "a" not in "hello" |
True |
适用类型:列表、字符串、元组、字典(仅检测键) |
运算符优先级
从高到低:
**
(幂运算)~
、+
、-
(取反、正负号)*
、/
、%
、//
+
、-
<<
、>>
(位移)&
、^
、|
(位运算)==
、!=
、>
等(比较)not
、and
、or
(逻辑)
提示:使用()
显式指定优先级,如(2+3)*4
表达式
Python表达式是由操作数(变量、常量、函数调用)和运算符组成的代码单元,用于计算或生成值
- 算数表达式
- 比较表达式
- 逻辑表达式
- 赋值表达式
- 成员表达式
- Lambda表达式
- 三元表达式
- 身份表达式
- …
算数表达式:用于数值计算,返回数值结果
result = 10 + 5 * 2 # 结果为20(优先级:乘法先于加法)
print(9 % 4) # 取余,输出1
比较表达式:比较操作数并返回布尔值(True/False
)
a, b = 5, 3
print(a > b) # True
逻辑表达式:组合布尔值,返回布尔值或操作数
print(True and False) # False
print(0 or 4) # 4(非布尔值规则)
赋值表达式:
x = 10
x *= 2 # x = 20
成员表达式:检测元素是否在容器中,in
(存在)、not in
(不存在)
lst = [1, 2, 3]
print(2 in lst) # True
dct = {"name": "Alice"}
print("age" not in dct) # True(仅检查键)
三元表达式:
max_val = a if a > b else b # 返回a和b中的较大值
Lambda表达式:匿名函数
add = lambda x, y: x + y
print(add(2, 3)) # 5
计算思维
python一级需要掌握:
- 编写顺序执行的程序
- 分析简单的逻辑运算
- 比较运算中的结果
程序流程图
程序流程图又称程序框图,是用统一规定的标准符号描述程序运行具体步骤的图形表示。 程序框图的设计是在处理流程图的基础上,通过对输入输出数据和处理过程的详细分析,将计算机的主要运行步骤和内容标识出来。
标准符号
基本结构
-
顺序型
-
选择型:由某个逻辑判断式的取值决定选择两个处理中的一个
-
先判断的循环(while):在循环控制条件成立时,重复执行特定的处理
-
后判断的循环(until):重复执行某些特定的处理,直至控制条件成立
-
多情况型(case)选择:列举多种处理情况,根据控制变量的取值,选择执行其一
案例:
Turtle库
第三方库
Python第三方库是由社区开发者(非Python官方团队)创建和维护的可重用代码包,用于扩展Python标准库的功能,覆盖数据分析、Web开发、机器学习等广泛领域。它们通过简化复杂操作、提供高效工具,显著提升开发效率和代码质量。
什么是第三方库
第三方库是独立开发者或组织发布的代码集合,需通过包管理工具(如pip
)安装。它们不属于Python标准库,但提供标准库未覆盖的特定功能(如高级数学计算、网络爬虫等)
python环境如何安装第三方库
-
安装命令:
pip install 库名
(例如pip install requests
) -
版本控制:
pip install 库名==版本号
(如pip install pandas==1.3.5
) -
虚拟环境:使用
venv
或virtualenv
隔离项目依赖,避免版本冲突
常见第三方库
领域 | 库名称 | 主要作用 | 典型场景 |
---|---|---|---|
🌐 网络请求 | requests |
简化HTTP请求发送与响应处理,支持GET/POST等方法 | API调用、网页数据抓取**1 |
📈 数据分析 | pandas |
提供DataFrame 数据结构,支持数据清洗、转换、聚合分析 |
结构化数据处理、CSV/Excel操作 |
numpy |
高效处理多维数组和矩阵运算,支持科学计算 | 数值模拟、线性代数运算 | |
📊 数据可视化 | matplotlib |
绘制2D图表(折线图、散点图等) | 数据结果可视化 |
pyecharts |
生成交互式Echarts图表 | 动态数据展示 | |
🤖 机器学习 | scikit-learn |
提供经典机器学习算法(分类、回归、聚类) | 模型训练与评估 |
TensorFlow |
深度学习框架,支持神经网络构建 | 图像识别、自然语言处理 | |
🧠 NLP处理 | nltk |
自然语言处理工具包(分词、词性标注) | 文本分析、情感识别 |
spaCy |
工业级NLP库,支持实体识别、句法分析 | 大规模文本处理 | |
🕷️ 网络爬虫 | scrapy |
分布式爬虫框架,支持数据自动抓取与结构化存储 | 网站数据批量采集 |
beautifulsoup4 |
解析HTML/XML文档,提取特定内容 | 网页内容抽取 | |
🌐 Web开发 | Django |
全功能Web框架(ORM、模板引擎、用户认证) | 企业级应用开发 |
Flask |
轻量级Web框架,灵活扩展 |
导入库的方式
- 全量导入:
import pandas as pd
- 按需导入:
from datetime import date
Turetle库导入
import turtle # 推荐方式,避免命名冲突
# 或
from turtle import * # 直接调用函数(小型项目适用)
画布设置
screen = turtle.Screen() # 创建画布
screen.title("我的绘图") # 设置窗口标题
screen.bgcolor("lightblue") # 设置背景色
pen = turtle.Turtle() # 创建画笔对象
pen.shape("turtle") # 设置画笔形状(海龟/箭头等)
pen.speed(5) # 设置速度(1-10,10最快)
创建画布对象:
screen = turtle.Screen() # 创建画布
画布名 = 海龟库中的Screen()方法
设置画布状态:
画笔(海龟)设置
创建画笔(海龟)对象的两种方式:
pen = turtle.Pen()
pen = turtle.Turtle()
设置画笔(海龟)的参数:
-
颜色:
pencolor()
-
填充颜色:
fillcolor()
-
pen.begin_fill() # 开始填充 # 绘制图形(如正方形) for _ in range(4): pen.forward(100) pen.right(90) pen.end_fill() # 结束填充 <!--code27-->
-
# 五角星
for _ in range(5):
pen.forward(150)
pen.right(144) # 转角144°
多画笔(海龟)
t1 = turtle.Turtle() # 海龟1画三角形
t2 = turtle.Turtle() # 海龟2画正方形