前言
话说在编程的世界中,流传着这样一句话:没有不能实现的功能,有就多加几个if…else,哈哈,这当然是作者杜撰的,实际编码中,嵌套复杂的if…else是不可取的,可读性差且容易出错。但是它作为编码中不可或缺的一部分,使用规则却不得不掌握。记得在某个论坛看过一篇文章,说是高手一般不用if…else?excuse me? 看完之后,整的咱都不会写代码了。
条件语句
从上图中可知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("这回猜小了,请重猜")