信息素养-算法应用 | Python初赛备考手册
目录
一、IPO(输入 / 处理 / 输出)
1. 输出语句:输出字符串;输出算式运算结果
- • 讲解:
print()函数用于将内容输出到控制台。可以输出字符串(用引号括起来),也可以直接输出算术表达式的结果。
# 输出字符串print("你好,非遗文化!")# 输出算式运算结果print(7 * 8 + 15)
你好,非遗文化!71
- • 执行过程分析:第一行
print将字符串原样输出并换行;第二行先计算7*8+15得到71,再将数值71转换为字符串输出。
2. 输入语句:input() 输入,input() 输入数据的类型为字符串
- • 讲解:
input()从键盘读取一行文本,返回值永远是字符串类型。如需整数或浮点数,需用int()或float()转换。
name = input("请输入你的名字:")print("你好," + name)print("输入的数据类型是:", type(name))
请输入你的名字:小明你好,小明输入的数据类型是: <class 'str'>
- • 执行过程分析:程序暂停等待用户输入,用户输入“小明”并回车后,字符串“小明”被赋给变量
name,后续输出展示其类型为str。
3. 变量命名:变量名命名规则
- • 讲解:变量名只能包含字母、数字、下划线,且不能以数字开头;不能使用Python关键字(如
if、for);区分大小写;应具有描述性。
# 合法变量名示例非遗_项目 = "剪纸"num_students = 30score2 = 95print(非遗_项目, num_students, score2)
剪纸 30 95
- • 执行过程分析:三个变量分别存储字符串、整数、整数,命名符合规则,输出正常。若写成
2score = 95会报语法错误。
4. 变量赋值:= 赋值格式
- • 讲解:使用等号
=将右侧的值赋给左侧的变量。可以连续赋值或同时给多个变量赋值。
a = 10# 简单赋值b = c = 20# 链式赋值x, y = 3, 4# 元组解包赋值print(a, b, c, x, y)
10 20 20 3 4
- • 执行过程分析:
a得到10;b和c同时得到20;x和y依次获得3和4。赋值顺序是从右向左计算右侧表达式。
5. 基础数据类型:整数、字符串、浮点数、布尔类型
- • 讲解:
int(整数,如5,-3)、str(字符串,如"abc")、float(浮点数,如3.14)、bool(布尔值,True/False)。可用type()查看。
age = 12# intpi = 3.1415# floatname = "丝绸之路"# stris_passed = True# boolprint(type(age), type(pi), type(name), type(is_passed))
<class 'int'> <class 'float'> <class 'str'> <class 'bool'>
- • 执行过程分析:每个变量被赋予不同类型的字面量,
type()函数返回其类型对象,打印出类型名称。
6. 注释、缩进:注释符号、注释的作用、缩进格式
- • 讲解:单行注释用
#,多行注释可用三个引号。注释用于解释代码,不会被运行。缩进在Python中表示代码块(如if、for后缩进4个空格),必须严格一致。
# 这是一个单行注释"""多行注释示例用于说明代码功能"""score = 85if score >= 60:print("及格") # 这行前面有4个空格(缩进)print("程序结束")
及格程序结束
- • 执行过程分析:注释不影响执行。
if条件为True,执行缩进内的print;最后的print无缩进,属于外层代码,一定执行。
二、运算模块
1. 算术运算:+ - * / // % **
- • 讲解:
+加,-减,*乘,/除(结果浮点数),//整除(取商整数),%取余,**幂运算。
a, b = 17, 5print("加:", a + b)print("减:", a - b)print("乘:", a * b)print("除:", a / b)print("整除:", a // b)print("余数:", a % b)print("幂:", 2 ** 4)
加: 22减: 12乘: 85除: 3.4整除: 3余数: 2幂: 16
- • 执行过程分析:依次计算各表达式,注意除法结果为浮点数,整除向下取整,幂运算
2**4为2的4次方。
2. 比较运算:> < >= <= == !=
- • 讲解:比较两个值,结果为布尔值True或False。
==判断相等,!=判断不等。
x, y = 10, 20print(x > y) # Falseprint(x < y) # Trueprint(x >= 10) # Trueprint(x <= 9) # Falseprint(x == 10) # Trueprint(x != 10) # False
FalseTrueTrueFalseTrueFalse
- • 执行过程分析:每个比较运算独立计算,输出对应的布尔值。
3. 逻辑运算:not and or
- • 讲解:用于组合布尔表达式。
and两侧都为True结果才为True;or一侧为True即为True;not取反。
a, b = True, Falseprint(a and b) # Falseprint(a or b) # Trueprint(not a) # False# 结合比较运算score = 85print(score >= 60and score <= 100) # True
FalseTrueFalseTrue
- • 执行过程分析:先计算
score >= 60为True,score <= 100为True,True and True得True。
三、分支结构
1. 单分支:if 单分支
- • 讲解:
if后面跟条件表达式,条件为True时执行缩进代码块。
age = 12if age >= 10:print("你可以参加小学高段组比赛")print("继续执行")
你可以参加小学高段组比赛继续执行
- • 执行过程分析:
age>=10为True,执行缩进内的print;然后执行后面的print。
2. 双分支:if ... else ...
- • 讲解:
if条件True执行其代码块,否则执行else代码块。
score = 58if score >= 60:print("通过初赛")else:print("未通过初赛")
未通过初赛
- • 执行过程分析:条件
score>=60为False,跳转到else分支执行。
3. 多分支:if ... elif ... else ...
- • 讲解:依次判断多个条件,执行第一个满足条件的代码块,最后可加
else处理其余情况。
level = 3if level == 1:print("小学低段组")elif level == 2:print("小学高段组")elif level == 3:print("初中组")else:print("未知组别")
初中组
- • 执行过程分析:
level==1False,level==2False,level==3True,执行对应print后跳过整个分支。
四、循环结构
1. for 循环:for i in range();遍历列表;遍历字典;遍历字符串
- • 讲解:
for循环可遍历可迭代对象。range(stop)生成0到stop-1的整数序列。也可直接遍历列表、字典、字符串。
# range示例print("range(3):", end=" ")for i inrange(3):print(i, end=" ")print()# 遍历列表heritage = ["剪纸", "皮影", "刺绣"]for h in heritage:print(h, end=" ")print()# 遍历字符串for ch in"丝路":print(ch, end=" ")
range(3): 0 1 2 剪纸 皮影 刺绣 丝 路
- • 执行过程分析:
range(3)产生0,1,2;列表遍历逐个取出元素;字符串遍历逐个取出字符。
2. while 循环: while True 无限循环
- • 讲解:
while条件为True时重复执行代码块。while True表示无限循环,通常配合break退出。
count = 0whileTrue:print("循环中", count) count += 1if count >= 3:breakprint("退出循环")
循环中 0循环中 1循环中 2退出循环
- • 执行过程分析:
while True永远为真,执行内部代码;count从0开始,每次加1,当count>=3时执行break跳出循环。
3. 循环控制:break、continue
- • 讲解:
break立即终止整个循环;continue跳过本次循环剩余代码,进入下一次迭代。
for i inrange(5):if i == 2:continue# 跳过i=2时的输出if i == 4:break# i=4时终止循环print(i)
013
- • 执行过程分析:i=0,1正常输出;i=2遇到continue,跳过print,直接进行下一轮i=3;i=3输出;i=4遇到break,循环结束,不输出4。
4. 双层循环:for 循环嵌套
- • 讲解:循环内部再嵌套循环,外层循环每迭代一次,内层循环完整执行一轮。
for i inrange(1, 4): # 外层:1,2,3for j inrange(1, 4): # 内层:1,2,3print(f"{i}×{j}={i*j}", end=" ")print() # 换行
1×1=1 1×2=2 1×3=3 2×1=2 2×2=4 2×3=6 3×1=3 3×2=6 3×3=9
- • 执行过程分析:外层i=1时,内层j跑1,2,3;输出后换行;然后i=2,再跑内层,以此类推。
五、字符串
1. 字符串定义:用引号创建字符串
- • 讲解:可以使用单引号
'...'、双引号"..."、三引号'''...'''或"""..."""创建字符串。
s1 = '红色文化's2 = "长征精神"s3 = '''井冈山黄洋界'''print(s1, s2)print(s3)
红色文化 长征精神井冈山黄洋界
- • 执行过程分析:三引号允许字符串跨行,输出时保留换行。
2. 字符串索引:单个字符的正索引访问(从 0 开始)
- • 讲解:通过
[位置]获取指定索引的字符,索引从0开始,最后一个字符索引为len(s)-1。
s = "非遗传承"print(s[0]) # 第一个字符print(s[2]) # 第三个字符print(s[-1]) # 负索引表示倒数第一个
非传承
- • 执行过程分析:字符串“非遗传承”中,索引0:'非',1:'遗',2:'传',3:'承';负索引-1对应最后一个字符'承'。
3. 字符串拼接:使用 + 连接两个字符串
part1 = "文化"part2 = "自信"result = part1 + part2print(result)
文化自信
- • 执行过程分析:
part1和part2中的字符依次连接,生成新字符串。
4. 字符串重复:使用 * 重复字符串
symbol = "★"print(symbol * 5)print("丝路" * 2)
★★★★★丝路丝路
- • 执行过程分析:
"★"*5生成包含5个星号的字符串。
5. 字符串长度:len() 获取长度
- • 讲解:
len(字符串)返回字符串中字符的个数(中英文均算一个字符)。
s = "Hello, 兵马俑"print(len(s))
12
- • 执行过程分析:字符包括H,e,l,l,o,,,空格,兵,马,俑 → 共12个。
6. 字符串包含:使用 in 判断子串是否存在
- • 讲解:
sub in s判断sub是否为s的子串,返回布尔值。
poem = "黄沙百战穿金甲"print("黄沙"in poem)print("绿洲"in poem)
TrueFalse
- • 执行过程分析:
"黄沙"连续出现在poem开头,返回True;"绿洲"不在其中。
7. 字符串分割:split() 按分隔符切分字符串
- • 讲解:
split(sep)将字符串按sep分割成列表,默认按空白(空格、换行等)分割。
data = "剪纸,皮影,泥塑"items = data.split(",")print(items)
['剪纸', '皮影', '泥塑']
- • 执行过程分析:以逗号为分隔符,将字符串拆分成三个元素的列表。
六、列表
1. 列表定义:用 [] 创建列表
- • 讲解:列表用方括号
[]表示,元素间用逗号分隔,可存储任意类型。
empty_list = []scores = [88, 92, 76]mixed = ["长征", 1934, True]print(scores, mixed)
[88, 92, 76] ['长征', 1934, True]
- • 执行过程分析:分别创建整数列表和混合类型列表。
2. 列表索引:通过正索引访问单个元素
- • 讲解:与字符串类似,使用
[索引]访问元素,索引从0开始。
heritage = ["剪纸", "皮影", "年画"]print(heritage[0]) # 第一个print(heritage[2]) # 第三个
剪纸年画
- • 执行过程分析:索引0指向"剪纸",索引2指向"年画"。
3. 列表添加:append() 在末尾追加元素
- • 讲解:
列表.append(元素)在列表末尾添加一个新元素,修改原列表。
heritage = ["剪纸", "皮影"]heritage.append("刺绣")print(heritage)
['剪纸', '皮影', '刺绣']
- • 执行过程分析:在原列表末尾增加字符串"刺绣"。
4. 列表删除:remove() 删除指定元素
- • 讲解:
列表.remove(值)删除列表中第一个匹配的元素,若不存在则报错。
scores = [95, 88, 95, 72]scores.remove(95) # 只删除第一个95print(scores)
[88, 95, 72]
- • 执行过程分析:从左到右找到第一个值为95的元素并删除,剩余元素顺序保持。
5. 列表遍历:使用 for 循环逐个访问元素
- • 讲解:用
for 变量 in 列表:依次取出每个元素。
colors = ["红", "黄", "蓝"]for c in colors:print(c)
红黄蓝
- • 执行过程分析:每次迭代将列表中的一个元素赋值给c,然后执行循环体。
6. 列表长度:len() 获取元素个数
heritage = ["剪纸", "皮影", "刺绣", "年画"]print(len(heritage))
4
- • 执行过程分析:列表包含4个字符串,len返回4。
7. 列表包含:使用 in 判断元素是否存在
festivals = ["春节", "中秋", "端午"]print("清明"in festivals)print("端午"in festivals)
FalseTrue
8. 列表顺序:升序:sort();降序:sort(reverse=True);sorted();reverse()
- • 讲解:
列表.sort()原地升序排序;列表.sort(reverse=True)原地降序;sorted(列表)返回新排序列表;列表.reverse()反转元素顺序。
nums = [3, 1, 4, 2]nums.sort()print("升序:", nums)nums.sort(reverse=True)print("降序:", nums)nums.reverse()print("再反转:", nums)new_nums = sorted([5, 2, 8]) # 原列表不变print("sorted返回:", new_nums)
升序: [1, 2, 3, 4]降序: [4, 3, 2, 1]再反转: [1, 2, 3, 4]sorted返回: [2, 5, 8]
- • 执行过程分析:
sort()直接修改原列表;reverse()将元素头尾调换;sorted()生成新列表。
七、字典
字典特性:一系列键值对,键为不可变类型
- • 讲解:字典用
{}表示,存储键值对键:值。键必须是不可变类型(如字符串、数字、元组),值可以是任意类型。通过键快速访问值。
# 存储非遗项目信息intangible = {"名称": "中国剪纸","地区": "河北","级别": "国家级"}print(intangible["名称"])# 添加新键值对intangible["年份"] = 2006print(intangible)
中国剪纸{'名称': '中国剪纸', '地区': '河北', '级别': '国家级', '年份': 2006}
- • 执行过程分析:字典通过键
"名称"获取值;直接赋值新键"年份"会在字典中添加条目。
八、元组
1. 元组定义:tuple()定义元组
- • 讲解:元组用小括号
()表示,元素不可变(不能增删改)。也可以用tuple(可迭代对象)转换。
t1 = (1, 2, 3)t2 = tuple([4, 5, 6])print(t1, t2)
(1, 2, 3) (4, 5, 6)
- • 执行过程分析:两种方式都创建元组,元组内容不能修改。
2. 元组长度:len()获取元组长度
colors = ("红", "黄", "蓝")print(len(colors))
3
3. 元组索引:通过索引访问单个元素
- • 讲解:与列表类似,使用
[索引]访问,索引从0开始。
dimensions = (1920, 1080)print("宽度:", dimensions[0])print("高度:", dimensions[1])
宽度: 1920高度: 1080
- • 执行过程分析:索引0对应第一个元素1920,索引1对应1080。
九、文件
csv文件:csv文件的读取和写入
- • 讲解:CSV(逗号分隔值)是一种常见数据格式。Python通过
csv模块读写。读取时常用csv.reader,写入用csv.writer。 - • 示例代码(读取非遗项目CSV,再写入新文件):
import csv# 写入CSVwithopen('heritage.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerow(["项目", "地区", "年份"]) # 写入表头 writer.writerow(["剪纸", "河北", 2006]) writer.writerow(["皮影戏", "陕西", 2011])# 读取CSVwithopen('heritage.csv', 'r', encoding='utf-8') as f: reader = csv.reader(f)for row in reader:print(row)
['项目', '地区', '年份']['剪纸', '河北', '2006']['皮影戏', '陕西', '2011']
- • 执行过程分析:先以写模式打开文件,
csv.writer将行数据写入;再以读模式打开,csv.reader逐行读取返回列表。newline=''防止Windows下多余空行。
十、异常处理
try-except语句:try-except结构语句的逻辑
- • 讲解:
try块中放置可能出错的代码,如果发生异常,程序跳转到except块执行,避免程序崩溃。可指定异常类型。
try: num = int(input("请输入整数:")) result = 100 / numprint("结果是:", result)except ValueError:print("输入的不是有效整数!")except ZeroDivisionError:print("不能除以零!")
请输入整数:abc输入的不是有效整数!
- • 执行过程分析:
int("abc")引发ValueError,程序立即跳转到对应的except ValueError块,输出提示,不会执行后续除法。若输入0,则触发ZeroDivisionError。
十一、数制
数制转换:bin()、hex()、oct()等
- • 讲解:
bin(x)将整数转为二进制字符串(前缀0b);hex(x)转为十六进制(前缀0x);oct(x)转为八进制(前缀0o)。反向转换可用int(s, base)。
num = 42print("十进制:", num)print("二进制:", bin(num))print("八进制:", oct(num))print("十六进制:", hex(num))# 从字符串转换回整数print(int('0b101010', 2)) # 二进制转十进制
十进制: 42二进制: 0b101010八进制: 0o52十六进制: 0x2a42
- • 执行过程分析:
42的二进制为101010;八进制52;十六进制2a;int('0b101010', 2)按二进制解析得到42。
以上是带目录的完整考点大纲讲解。您可以将此文档用于备赛复习。祝比赛顺利!
PDF附件: