for i in range(1, 6):
if i == 2:
continue
if i == 4:
break
print(i) # 依次输出1、3
随堂练习
K4-131 下面程序输出什么?
for i in range(1, 6):
if i % 3 == 0:
break
else:
print(i, end=',')
答案与解析
B 当i=3时终止循环,3不会被打印。
K4-132 下面程序输出什么?
for i in range(1, 6):
if i % 4 == 0:
continue
else:
print(i, end=',')
答案与解析
C i=4时跳过本轮,i=5仍继续打印。
K4-133 下面程序输出什么?
for i in range(1, 6):
if i / 3 == 0:
break
else:
print(i, end=',')
答案与解析
C 这里是除法/,不是取余%;对1至5,i/3都不等于0。
K4-134 输入fish520,下面代码输出什么?
w = input()
for x in w:
if '0' <= x <= '9':
continue
else:
w.replace(x, '')
print(w)
答案与解析
D replace返回新字符串,未赋值给w时不会改变w。
K4-135 单次输入哪个数不能触发break?
while True:
inp = eval(input('请输入一个数值:'))
if inp // 3:
break
答案与解析
A 2//3为0,假值;其他选项//3为1。注意程序还会继续读取下一次输入,并非永远无法退出。
K4-136 下列程序的输出是什么?
Flower = ['梅花', '风信子', '桃花', '迷迭香', '茉莉花']
for s in flower:
if '花' in s:
print(s, end='')
continue
答案与解析
原代码NameError;统一变量名后为A 原课件第一行是Flower,循环却用flower;Python区分大小写。若将循环改为for s in Flower,则输出A。这里保留原错字用于核对,不默认为代码能运行。
4.7 循环else与综合应用
本节重点:正常结束执行else;break退出跳过else;continue不取消else。
函数 / 语法
功能与参数
调用示例 / 结果
for...else
for正常遍历完时执行else;若被break结束则跳过else。
可表示“未发现不符合条件的元素”
while...else
while条件变为假后执行else;被break结束则不执行。
循环体一次未执行也可能进入else
continue与else
continue只跳过本轮,不取消循环最终的else。
正常遍历完仍执行else
回文素数组合
先试除判断素数,再转成字符串用逆序切片判断回文。
s=str(n);s==s[::-1]
for-else判断素数
from math import isqrt
n = int(input())
if n < 2:
print('no')
else:
for d in range(2, isqrt(n) + 1):
if n % d == 0:
print('no')
break
else:
print('yes')
函数、异常处理与题型回顾
分支判断与边界
函数 / 语法
含义与使用条件
if condition:
条件成立时执行缩进内的语句。
多个独立的if
每条if都会依次判断;前面的语句可以改变后面的条件。
if / elif / else
只执行第一个成立条件的分支。
A if condition else B
条件表达式的结果是A或B。
low <= x <= high
链式比较包含两端;等价于两个比较通过and连接。
isinstance(value, int)
判断类型;1.0是float,不属于int。
and与or短路
and左侧为假时不求右侧;or左侧为真时不求右侧。
M-4-021 用来判断当前Python语句属于分支语句块的是?
答案与解析
C 缩进层次决定语句归属的代码块。
M-4-025 关于下面代码,描述错误的是?
PM = int(input())
if PM > 75:
print('空气污染,请小心!')
if PM < 35:
print('空气良好,适度户外活动!')
答案与解析
C 20小于35,第二个独立的if成立。
M-4-031 下面代码的输出结果是?
a = 1.0
if isinstance(a, int):
print('{} is int'.format(a))
else:
print('{} is not int'.format(a))
答案与解析
A 1.0的类型是float。
M-4-032 下面代码的执行结果是?
a, b = 0, 1
if (a > 0) or (b / a > 2):
print('ok')
else:
print('error')
答案与解析
D or左侧为False,继续求右侧b/a,因a为0而发生异常。
M-4-035 已知x=2、y=1,哪项语法正确且可执行?
答案与解析
D 条件表达式为A if condition else B,两侧都须为合法表达式。
M-4-036 输入60,下面代码输出什么?
s = int(input())
k = '合格' if s >= 60 else '不合格'
print(s, k)
答案与解析
A 60满足s>=60。
M-4-058 关于分支结构,描述错误的是?
答案与解析
A 分支按条件选择路径;重复执行需要循环等控制结构。
M-4-059 关于分支结构,描述不正确的是?
答案与解析
D 紧凑条件表达式使用if和else。
M-4-060 下列关于链式比较的描述,正确的是?
答案与解析
B 链式比较合法;28<25为False,整体为False。
M-4-017 以下哪项不是Python语言的基本控制结构?
答案与解析
B 基本控制结构为顺序、分支和循环。
M-4-024 输入5,下面代码输出什么?
n = int(input())
s = 0
if n >= 5:
n -= 1
s = 4
if n < 5:
n -= 1
s = 3
print(s)
答案与解析
B 第一个if把n改为4,随后第二个独立的if成立,最终s为3。
循环遍历、索引与计数
函数 / 语法
含义与使用条件
for value in values
依次获得元素本身。
for i in range(len(values))
依次获得0至len(values)−1的索引。
range(start,stop,step)
包含start,不包含stop;step决定每轮增量。
s[-0]
−0仍为0,取首字符;不是末字符。
s[-i]
i从0开始时先取首字符,再向前取末尾字符。
for ... else
正常遍历结束执行else;被break终止时不执行。
可遍历的对象
字符串、列表、元组、集合、字典等;单个整数或复数不可直接遍历。
M-4-073 for...in...不能直接遍历以下哪种类型?
答案与解析
B 复数是单个数值,不是可迭代对象。
M-4-075 下面代码的输出结果是?
S = 'Pame'
for i in range(len(S)):
print(S[-i], end='')
答案与解析
D i依次为0、1、2、3,对应索引0、−1、−2、−3。
M-4-076 已知ls=["1","2","3"],以下描述错误的是?
答案与解析
B 前者i为整数索引0、1、2,后者i为字符串元素1、2、3。
M-4-087 下面代码的输出结果是?
sumn = 0
for i in range(0, 100):
if i % 2 == 0:
sumn -= i
else:
sumn += i
print(sumn)
答案与解析
D 每对相邻的偶数、奇数贡献1,共50对。
M-4-088 下面代码输出多少个值?
x = 15
y = 2
if x % 2 != 0:
y = 1
for i in range(y, x + 2, 2):
print(i)
答案与解析
C x为奇数,y改为1;range(1,17,2)产生1至15的8个奇数。
函数定义与调用
函数 / 语法
含义与使用条件
def name(a, b):
创建函数并绑定名称;此时不执行函数体。
name(x, y)
先求实参的值,再进入函数体;形参接收传入值。
函数名与调用结果
name表示函数对象;name(...)表示一次调用的返回值。
定义顺序
执行调用时,被调用函数必须已经完成定义。
"""说明"""
函数体第一条字符串是文档字符串;用name.__doc__读取。
return value
返回结果并立即结束当前调用;return后面的本轮代码不再执行。
无return或仅return
返回None;print函数的返回值也是None。
return a, b
返回一个包含a和b的元组;可用x,y接收。
M-5-008 以下关于Python函数的描述,错误的是?
答案与解析
B 调用同一个函数时可以传入不同的实参。
M-5-013 Python中函数的常见分类不包括哪项?
答案与解析
B 参数用于向函数传递数据,不是函数来源的分类。
M-5-021 函数定义可以不包括以下哪项?
答案与解析
D 没有形参时仍需保留函数名后的一对圆括号。
M-5-024 下面代码的输出结果是?
t = 10.5
def above_zero(t):
return t > 0
答案与解析
D 这里只定义函数,未调用函数,也未执行print。
M-5-036 关于return语句,以下描述正确的是?
答案与解析
D 没有显式return时默认返回None;多个return可以出现在不同分支。
M-5-037 下面代码的输出结果是?
def fun(x, y):
x = y
x = 5
print(fun(x, 6))
答案与解析
D fun中没有return,调用返回None。
函数复用与组合
函数 / 语法
含义与使用条件
isprime(n)
把素数判断封装为返回布尔值的函数。
gcd(gcd(a,b),c)
逐次把两个数的计算推广到多个数。
s == s[::-1]
逆序切片判断回文;可与素数函数组合。
if isprime(i) and isprime(n-i):
两个加数都满足条件才构成所需方案。
return与break
return结束当前函数;break只结束所在的最内层循环。
嵌套函数与闭包
嵌套定义本身不保证形成闭包;内部函数引用外层函数的变量时才涉及闭包。
M-5-016 以下关于函数作用的描述,错误的是?
答案与解析
B 封装函数不能保证提高执行速度;它主要服务于复用和结构组织。
M-5-042 下面代码的输出结果是?
def split(s):
return s.split('a')
s = 'an apple a day'
print(s.split())
答案与解析
A s.split()调用字符串的方法,与自定义的全局函数split无关。
M-5-046 下面代码的输出结果是?
def hello_world():
print('ST', end='*')
def three_hellos():
for i in range(3):
hello_world()
three_hellos()