2.2.1-条件语句.md

问答库

2.2.1 条件语句(问答库)

  1. 【单选题·易】双分支条件语句的一般形式中,条件1和 else 后面必不可少的是: A. 分号 B. 逗号 C. 冒号 D. 括号 答案:C 解析: 课程明确指出,条件1和 else 后面的冒号必不可少。Python 用冒号引出代码块,而不是用分号或括号。
  2. 【单选题·易】双分支条件语句的执行过程是: A. 先执行代码块1,再根据条件决定是否执行代码块2 B. 先计算条件1,若为真则执行代码块1,否则执行代码块2 C. 条件1为真时同时执行代码块1和代码块2 D. 必须把两个代码块都执行一遍 答案:B 解析: 要素是条件1、代码块1和代码块2。执行过程为:先计算条件1,若为真则执行代码块1,否则执行代码块2,二者只走其中一条。
  3. 【判断题·易】条件语句必须带有 else 分支,否则会出现语法错误。 答案:× 解析: 特殊情况下可以没有 else,形成单分支条件语句,只在条件为真时执行代码块。例如求绝对值时,仅当 a < 0 才改写 a。
  4. 【判断题·易】在嵌套的分支结构中,保持代码缩进整齐是关键;不正确的缩进会导致语法错误或逻辑错误。 答案:√ 解析: 课程强调 Python 依赖缩进来区分代码块,嵌套时缩进不齐既可能无法运行,也可能运行结果与预期不符。
  5. 【多选题·中】根据课程内容,条件语句可以写成下列哪些结构? A. 双分支(if-else) B. 单分支(只有 if) C. 多分支(if-elif-else) D. 嵌套分支(分支内部再写条件语句) 答案:ABCD 解析: 课程依次介绍了一般双分支、无 else 的单分支、elif 多分支,以及嵌套分支,四项都属于条件语句的合法结构。
  6. 【单选题·中】判断输入成绩是否及格,下列写法与课程示例一致的是: A. if a > 60: B. if a >= 60: C. if a > 59.5: D. if a == 60: 答案:B 解析: 课程示例为 if a >= 60:,60 分算及格。A 把刚好 60 分判为不及格;C、D 不是课程给出的判定条件。
  7. 【多选题·中】下列条件写法与课程实例一致的有: A. 'A' <= a <= 'Z' 判断是否为大写英文字母 B. x.find('中国') >= 0 判断字符串是否包含“中国” C. x in course 判断所选课程是否在合法列表中 D. x.find('中国') == -1 表示字符串包含“中国” 答案:ABC 解析: A、B、C 均来自条件语句实例。find() 找到子串时返回下标(大于等于 0),找不到时返回 -1,因此“包含中国”应写 >= 0,D 把含义写反了。
  8. 【判断题·中】成年人 BMI 分类程序中,bmi = 24 会输出“正常”。 答案:× 解析: 程序按顺序判断:< 18.5 偏瘦,< 24 正常,< 28 超重,否则肥胖。24 不满足 < 24,但满足 < 28,应输出“超重”。多分支是“前面为真才进入,否则继续往后”。
  9. 【单选题·难】运行下列程序,输出结果是什么?
grades = [85, 90, 38, 52, 88, 41, 63]
average = sum(grades) / len(grades)
if average >= 60:
    print("平均成绩及格。")
else:
    print("平均成绩不及格。")

A. 平均成绩及格。 B. 平均成绩不及格。 C. 65 D. 程序报错,因为列表中有不及格分数 答案:A 解析: 这是课程例2-1。成绩之和为 457,人数为 7,平均分约为 65.29,满足 average >= 60,输出“平均成绩及格。”。列表里存在不及格分数不影响“平均分是否及格”的判断。

  1. 【单选题·难】运行下列程序,输出结果是什么?
year = 2000
month = 2
if month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12:
    print("{} 月有 31 天".format(month))
elif month == 4 or month == 6 or month == 9 or month == 11:
    print("{} 月有 30 天".format(month))
elif month == 2:
    if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
        print("{} 月有 29 天 (闰年)".format(month))
    else:
        print("{} 月有 28 天".format(month))
else:
    print("输入的月份不合法")

A. 2 月有 28 天 B. 2 月有 29 天 (闰年) C. 2 月有 31 天 D. 输入的月份不合法 答案:B 解析: 对应课程例2-3 的嵌套结构。month == 2 进入闰年判断。2000 能被 400 整除,满足 (year % 400 == 0),是闰年,2 月有 29 天。若误以为“能被 100 整除就不是闰年”而忽略 400 的例外,会错选 A。

  1. 【简答题·中】什么是单分支条件语句?请结合“输入一个实数,计算并输出它的绝对值”说明何时需要计算、何时不需要,并写出可直接运行的示例程序(用变量赋值代替键盘输入)。 答案: 单分支条件语句没有 else,只在条件为真时执行代码块。求绝对值时:a >= 0 则绝对值就是它自身,无须计算;a < 0 则绝对值是它的相反数,需要执行 a = -a。示例:
a = -3.5
if a < 0:
    a = -a
print(a)

运行后输出 3.5。注意 print(a) 在 if 之外,正数、负数都会输出。 解析: 评分要点:①说明可以没有 else;②分清 a >= 0 不计算、a < 0 取相反数;③代码语法正确,print 不缩进到 if 内部;④能说明输出结果。

  1. 【简答题·难】编写程序:给定月份数字,输出该月所在季节。规则为 3–5 月春季、6–8 月夏季、9–11 月秋季、12 月到 2 月冬季;其他数字提示不合法。请写出可直接运行的完整程序(可用变量赋值代替 input),并说明 elif 按什么顺序判断。 答案: elif 按书写顺序依次判断,前面条件为真则不再执行后面分支。示例(month = 12 时应输出冬季):
month = 12
if 3 <= month <= 5:
    print("{} 月是春季".format(month))
elif 6 <= month <= 8:
    print("{} 月是夏季".format(month))
elif 9 <= month <= 11:
    print("{} 月是秋季".format(month))
elif month == 12 or 1 <= month <= 2:
    print("{} 月是冬季".format(month))
else:
    print("输入的月份不合法")

运行后输出 12 月是冬季。12 不在 3–5、6–8、9–11 中,第四个分支用 month == 12 or 1 <= month <= 2 覆盖冬季。 解析: 评分要点:①季节区间与课程例2-2 一致;②冬季写成 12 月或 1–2 月,不能只写 12 <= month <= 2(该链式比较恒为假);③else 处理非法月份;④代码可运行;⑤说明 elif 按顺序、短路。

下载此文件