Task 05 条件 Conditionals

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 是否落在以下范围内:

  1. 80 <= x1 <= 100 - 这是检查 x1 是否在 80 到 100 之间(包括边界值)。
  2. 60 <= x1 <= 79 - 这是检查 x1 是否在 60 到 79 之间。
  3. 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)
  • 如有错误,还望指出。感谢!
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值