流程控制之if条件控制

355 阅读3分钟

「这是我参与2022首次更文挑战的第9天,活动详情查看:2022首次更文挑战」。

前言

话说在编程的世界中,流传着这样一句话:没有不能实现的功能,有就多加几个if...else,哈哈,这当然是作者杜撰的,实际编码中,嵌套复杂的if...else是不可取的,可读性差且容易出错。但是它作为编码中不可或缺的一部分,使用规则却不得不掌握。记得在某个论坛看过一篇文章,说是高手一般不用if...else?excuse me? 看完之后,整的咱都不会写代码了。

image.png

条件语句

从上图中可知if的语法规则;即条件只有两个结果:True、False;那么这多与咱们上篇中讲到的比较运算符、成员运算符、身份运算符、逻辑运算符等搭配使用。

比较运算符

注意:python中没有switch这样的开关条件语句,如果出现多个条件只能使用elif多增加条件语句块

n = 4
if n > 4:
    print("大于条件为True")
elif n < 4:
    print("小于条件为True")
else:
    print("都不在条件内为False")

成员运算符

这个使用频率很高;常搭配循环语句使用

li = ["a",3,"4"]

print(bool("s" in li)) # 输出:False

# 使用条件
if "a" in li:
    i=li.index("a")
    print("输出字符a在li中的索引位:{}".format(i))
else:
    print("字符a不在li中")

身份运算符

这个使用频率相对低些

  • 前面说了它要比较的是两个变量,切勿使用值与变量或值与值
>>> s = "a"
>>> print("a" is s)
<stdin>:1: SyntaxWarning: "is" with a literal. Did you mean "=="?
True
>>> print("a" is "a")
<stdin>:1: SyntaxWarning: "is" with a literal. Did you mean "=="?
True
  • 正确的用法
>>> a = "s"
>>> b = "s"
>>> print(a is b)
True

>>> if a is b:
...     print("说明结果为True")
...
说明结果为True

逻辑运算符

当一个条件不足以判断时,就需要借助and、or、not逻辑运算符来完成了,再回忆一下运算符的优先级,逻辑运算符是在比较运算符之后的。

>>> a = 4
>>> b = 4
>>> c = 5
>>> if a > b or a < c:
...     print("只要满足一个条件即为True")
... elif a == b and c > b:
...     print("需要同时满足and两边的条件则为True")
... else:
...     print("上面只是为了演示,本来条件都满足的,但是只会在第一个正确的时候输出,下面一个就不再执行了")
...
只要满足一个条件即为True

if嵌套

这个也比较常用,但不是很建议用,if条件的使用规则,将最易满足条件放在最前头,如使用or的时候,第一容易为True则放在or的左边,and则可以相反,最容易为False可以放在and的左边,根据逻辑运算符的特性,如果左边不满足条件,and右边的是不会执行的。


a = 4
b = 6
c = 7

if a > b and c > a:
    print("不会有结果输出,并且不会执行c>a")
elif a < c or c > a:
    print("or的左边为true,即已满足条件,则输出,并不会指向性c>a")

# 这个结论是怎么得出的?咱们可以在ide工具debug调试一下
  • 咱们稍微修改一下代码,可以修改abc变量的值来达到效果并输出在控制台
a = 4
b = 6
c = 7

if a < b and print("左边为True才会执行右边"):
    print("为了演示效果")
elif a < c or print("左边为False才会执行右边") or True:
    print("为了演示效果")
 

练习

在前面的语法基础中,没有讲的两个函数,就是python的交互;input和print,输入的是变量的值,输出的是值,但都是字符串

var1 = input("请任意输入一个值:")

print(type(var1)) # 输出:<class 'str'>

print(var1) # 输出输入的字符
  • 猜年龄,假设一个目标年龄a=18,输入一个值赋给c,然后进行条件判断

c=int(input("请请猜猜我的年龄:<只能输入数字>"))
# 为啥要在input外包一层int(),为的是将用户输入的数字字符转成int类型,是可以进行比较运算

a = 18

if c == a:
    print("恭喜你猜对了")
elif: c > a:
    print("不好意思,猜大了")
else:
    print("这回猜小了,请重猜")