Task 05 条件 Conditionals
学习任务
- if 语句
- if-else 语句
- if-elif-else 语句
- if 语句的嵌套
- match-case 语句
- 代码风格示例
学习笔记
if语句
Python中if语句的一般形式如下所示:
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
- 如果 “condition_1” 为 True 将执行 “statement_block_1” 块语句
- 如果 “condition_1” 为False,将判断 “condition_2”
- 如果"condition_2" 为 True 将执行 “statement_block_2” 块语句
- 如果 “condition_2” 为False,将执行"statement_block_3"块语句
Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else。
注意:
1、每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
下面是常见的运算符:
运算符号 | 描述 |
---|---|
< | 小于 |
<= | 小于或等于 |
> | 大于 |
>= | 大于或等于 |
== | 等于,比较两个值是否相等 |
!= | 不等于 |
match…case语句
match 后的对象会依次与 case 后的内容进行匹配,如果匹配成功,则执行匹配到的表达式,否则直接跳过,_ 可以匹配一切。
语法格式如下:
match subject:
case <pattern_1>:
<action_1>
case <pattern_2>:
<action_2>
case <pattern_3>:
<action_3>
case _:
<action_wildcard>
case _: 类似于 C 和 Java 中的 default:,当其他 case 都无法匹配时,匹配这条,保证永远会匹配成功。
习题
# 现在程序中有一个变量x1
x1 = int(input())
# 在这行注释下面,编写代码,输出你的答案
if x1:
if 80<= x1 <=100:
print("A")
if 60<= x1 <= 79:
print("B")
if 0<= x1 <=59:
print("C")
else:
print("error")
上述代码当输入123时,却无法返回结果。
在你的代码中,if x1:
这一行是用来判断变量 x1
是否有有效值(非零或非空)的条件。在 Python 中,任何非零数值和非空对象都会被认为是真(True。因此,当你输入 123 时,if x1:
这个条件成立,所以程序会进入到这个 if
块内部。
然后,程序会检查 x1
是否落在以下范围内:
80 <= x1 <= 100
- 这是检查x1
是否在 80 到 100 之间(包括边界值)。60 <= x1 <= 79
- 这是检查x1
是否在 60 到 79 之间。0 <= x1 <= 59
- 这是检查x1
是否在 0 到 59 之间。
由于你输入的是 123,这个值不符合上述任何一个条件,所以没有任何输出被打印。此外,你的代码没有处理 x1
超出 0 到 100 范围的情况。
为了解决这个问题并优化你的代码,我们可以使用 if-elif-else
结构来确保只有一个条件被满足,并且增加一个条件来处理 x1
超出有效范围的情况。这里是修改后的代码:
x1 = int(input())
if 80 <= x1 <= 100:
print("A")
elif 60 <= x1 <= 79:
print("B")
elif 0 <= x1 <= 59:
print("C")
else:
print("error") # 处理不在0到100范围内的情况
解释:
- 我们用
elif
替代了多个if
语句,这保证了一旦某个条件满足,后续的elif
将不会被检查。 - 我增加了一个
else
语句,用于处理所有不符合前面条件的情况(例如输入超出范围的值)。 - 这样的结构不仅使代码更加清晰,还保证了每次只能打印一个输出,避免了可能的逻辑错误。
# 现在程序中有两个变量y, m
import ast
y, m=ast.literal_eval(input())
# 在这行注释下面,编写代码,输出你的答案
if (1582 <= y <= 2020) and (1<= m <= 12):
if ((y % 4 == 0 and y % 100 != 0) or (y % 400 == 0)):
if m == 2:
print(29)
elif m!=2 and m in(4,6,9,11):
print(30)
else:
prnt(31)
else:
if m== 2:
print(28)
elif m!=2 and m in(4,6,9,11):
print(30)
else:
print(31)
- 如有错误,还望指出。感谢!