9嵌套及条件语句常见错误

1.嵌套
嵌套指的就是一个东西“套在”另一个东西里,就像套娃一样。那嵌套条件,当然就是指一个条件语句在另一个条件语句里。
例:
is_week='星期天'
#week指当前星期
is_time=11

if is_week== '星期日' :
  if is_time < 11 :
#如果是星期天且当前时间没到11点,就去动物园
    print('去动物园')
  else :
#如果是星期天且当前时间超过11点,就在家看书
    print('在家看书')
else :
#如果不是星期天
  if is_time < 16 :
#如果不是星期天且时间没到16点,就在学校学习
    print('学校学习')
  else :
#如果不是星期天且时间超过16点,就自由活动
    print('自由活动')


嵌套条件写代码的过程里大概分为这四步:

确定外层条件
对外层条件使用条件语句建立分支结构
确定内层条件,建立分支结构
将内层条件及分支结构写进外层条件对应的分支里


2.了解多个if和if ... elif ... else语句的区别
**多个 if 语句和 if ... elif ... else是有区别的
例:
Height = 146

#代码演示,不适用elif
if Height < 150 :
  print('快快长大')
if 150 <= Height < 170 :
  print('多多运动')
if Height >= 170 :
  pring('身材不错')

# 代码示例:使用 elif
#代码演示,不适用elif
if Height < 150 :
  print('快快长大')
elif Height < 170 :
  print('多多运动')
else :
  pring('身材不错')

单看要实现的功能,这两段代码确实没什么区别;两段代码也都很好理解,不使用 elif 语句的代码甚至更符合人的直觉。那我们为什么还需要 elif 呢?

以上代码在 Height = 186 的情况下,如果代码中不使用elif,则计算机需要进行三次条件判断;但在 if ... elif ... else 语句中,Height < 150 的条件一旦被满足,就会跳出条件分支,所以计算机只需要进行一次条件判断就够了。不使用 elif 的代码无论在 Height 值为多少时,都需要进行三次条件判断;但使用 elif 的代码最多只需要进行两次条件判断。对计算机而言,条件判断就会占用计算机的运算资源,影响代码执行效率。
多路分支适合用来解决“多选一”的问题。在多个条件中只能满足一项,也就只能走一个分支,对这样的需求来说,使用 if ... elif ... else 语句无疑是更合适的。


3.常见错误
一、忘记条件后或 else 后的冒号:

num = 5
if num > 0
  print('num 大于 0')
else
  print('num 小于等于 0')
# 报错:SyntaxError: bad input on line 2
# (语法错误:第 2 行输入有问题)
SyntaxError 的意思是“语法错误”,这段代码中条件和 else 后面缺少了一个英文冒号 :

二、代码缩进错误:

num = 5
if num > 0:
print('num 大于 0')
else:
print('num 小于等于 0')
# 报错:IndentationError: expected an indented block
# (缩进错误:在这个代码块前面需要一个缩进)
IndentationError 指“缩进错误”,如果忘记了在 if 分支或 else 分支代码块前加缩进,那么代码就会报错。
***不要忘记在嵌套条件中需要额外再加一个缩进,也就是两个空格。

三、混淆 == 和 =

num = 5
if num = 0:
  print('num 等于 0')
else:
  print('num 不等于 0')
# 报错:SyntaxError: invalid syntax
# (语法错误:不正确的语法)
if 后面接的内容都需要转换成布尔值,使用双等号的 num == 0 是一个布尔表达式,它的值可以为 True 或 False,符合语法要求,但 num = 0 是一个赋值语句,无法被转换成布尔值,所以这里就会提示你 “语法错误”。
Python 用 = 来赋值,用 == 来判断相等

四、搞不清 bool('') 和 bool(' ') 的区别:

bool('')   # False
bool(' ')  # True

为什么第一个结果为 False,第二个结果为 True。请你看几个例子复习一遍:

bool('')        # False
bool(' ')       # True
bool('a')       # True
bool(0)         # False
bool(1)         # True
bool([])        # False
bool([1])       # True
bool({})        # False
bool({'a': 1})  # True

对于字符串来说,只有两个引号,中间什么都没有则为空,即 '' 为 False,其他为 True。对应数字来说,0 为空。即 0 为 False,其他都为 True。

对于列表、元组和字典,里面没有元素表示空的。即 []、() 和 {} 为 False,其他都为 True。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值