Python分支结构你真的搞定了吗?

古城微笑少年丶 2022-10-19 04:21 233阅读 0赞

分支结构

分支结构能够让计算机像人一样进行思考,应对不同的场景做出不同的回应。

Python中不支持switch语法,目前仅支持if/else形式,但是在Python3.10的测试版本中,貌似支持了switch语法,这里不做例举。

if

多条if语句出现会逐行进行判断,条件为真则执行其下的代码块,条件为假则略过:

  1. if 条件判断:
  2. 逻辑代码...
  3. if 条件判断:
  4. 逻辑代码...
  5. if 条件判断:
  6. 逻辑代码...

示例演示:

  1. userAge = int(input("请输入你的年龄:"))
  2. if userAge < 18:
  3. print("少年")
  4. if userAge >= 18 and userAge < 30:
  5. print("青年")
  6. if userAge >= 30 and userAge < 60:
  7. print("中年")
  8. if userAge >= 60 and userAge < 80:
  9. print("老年")
  10. if userAge >=80:
  11. print("尚能饭矣")

if/else

if代表如果怎样就怎样,else代表否则怎样就怎样。

一组if/else只会执行其中的一个。

以下是Python中if/else语法:

  1. if 条件判断:
  2. 逻辑代码...
  3. else
  4. 逻辑代码...

示例演示:

  1. ''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! '''
  2. userinput = input("输入任意字符,判断是否为数字串:")
  3. if userinput.isdigit():
  4. print("是数字串")
  5. else:
  6. print("不是数字串")

if/elif/else

多条if会按顺序依次执行,对每一条if语句都进行判定,而如果使用elif则只会从多条逻辑判定中取出最先为True的进行执行,后续的判定将不会被执行。

也就是说,if/elif/else三者只会执行一个。

语法使用如下:

  1. if 条件判断:
  2. 逻辑代码...
  3. elif 条件判断: # 如果条件成立,剩下同级别下的elif与else都不将再继续执行。
  4. 逻辑代码...
  5. elif 条件判断:
  6. 逻辑代码...
  7. else:
  8. 逻辑代码

示例演示:

  1. ''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! '''
  2. userAge = int(input(">>>"))
  3. if userAge < 18:
  4. print("少年")
  5. elif userAge < 30:
  6. print("青年")
  7. elif userAge < 60:
  8. print("中年")
  9. elif userAge < 80:
  10. print("老年")
  11. else:
  12. print("尚能饭矣")

三元表达式

普通形式

如果只是一个简单if/else判定,我们可以将代码写在一行,语法如下:

  1. <on_true> if <condition> else <on_false>

示例演示:

  1. age = int(input(">>>"))
  2. result = "成年" if age >= 18 else "未成年"
  3. print(result)

其他形式

上面的三元表达式是最常见的一种,除此之外再介绍几种不常见的。

第二种,这种有一个BUG,不能区分0或者Fasle:

  1. <condition> and <on_true> or <on_false>

如下所示,如果1大于0就返回0,否则返回False,但是第二种的返回的结果永远是False:

  1. result = 1 > 0 and 0 or False
  2. print(result)
  3. # False

如果使用第一种,就不会有这样的问题:

  1. ''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! '''
  2. result = 0 if 1 > 0 else False
  3. print(result)
  4. # False

第三种,语法如下:

  1. (<on_false>, <on_true>)[condition]

示例如下:

  1. age = int(input(">>>"))
  2. result = ("未成年", "已成年") [age >= 18]
  3. print(result)

第四种,语法如下:

  1. { True: <on_true>, False: <on_false>}[<condition>]

示例如下:

  1. age = int(input(">>>"))
  2. result = { True: "已成年", False: "未成年"}[age >= 18]
  3. print(result)

Python语法糖

链式比较

在Python中的判定支持一种链式比较,下面是常规的比较:

  1. print(3 > 2 and 2 > 1)
  2. print(3 > 1 and 1 > 2)
  3. # True
  4. # False

通过链式比较进行简写:

  1. ''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! '''
  2. print(3 > 2 > 1)
  3. print(3 > 1 > 2)
  4. # True
  5. # False

获得布尔值

判定用户输入的是否为数字串,如果为数字串result变量为True,否则为False。

很多情况下,初学者可能会写出下面这种代码:

  1. ''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! '''
  2. userInput = input(">>>")
  3. result = None
  4. if userInput.isdigit():
  5. result = True
  6. else:
  7. result = False
  8. print(result)

其实一行代码就可以搞定:

  1. userInput = input(">>>")
  2. result = bool(userInput.isdigit())
  3. print(result)

或者你也可以使用另一种方式:

  1. userInput = input(">>>")
  2. result = userInput.isdigit() or False
  3. print(result)

发表评论

表情:
评论列表 (有 0 条评论,233人围观)

还没有评论,来说两句吧...

相关阅读