我们在使用无线耳机听音乐的时候,我们可以设置轻点两下耳机就播放下一首。如果我只设置轻点两下耳机,就播放下一首,那么,由于缺少正在使用耳机(耳机塞进耳朵视为正在使用)的前提条件,无论你是否正在使用,只要轻点两下,就会播放下一首。
所以,我们的设置应该是这样:轻点两下,如果耳机正在使用中,就播放下一首。
而这个设置中的如果...就...逻辑,就是与计算机沟通的逻辑---条件判断,其作用就是明确的让计算机知道:在什么条件下,该去做什么。
对于Python也是一样的,Python之所以可以完成自动化任务,比如Python爬虫项目中可以成功获取我们指定的数据信息,就是因为它可以执行条件判断。
接下来,我们通过中国新四大发明之一的“扫码支付”来感受一下逻辑判断的趣味性。
二维码支付听起来似乎是一项十分新鲜的技术,其实,这个跟手机报差不多,算不上新颖的技术。早在上世纪90年代,二维码支付技术就已经形成,只不过在国内是近几年刚刚兴起的。
2014年春节微信红包上线,为扫码支付奠定了用户基础。
import random print("请输入红包金额,最多两位小数") money=round(float(input()),2) print("请输入红包数量") number=int(input()) print("请输入红包方式:1.拼手气红包 2.普通红包 3.专属红包") mode=int(input()) money=int(money*100) if mode == 1: for i in range(1, number): a = random.randint(1, money-(number-i)) # 随机生成红包金额 money = money-a print("第" + str(i) + "个人,收到" + str(a/100) + "元,") print("第" + str(number) + "个人,收到" + str(money/100) + "元,") elif mode == 2: for i in range(1, number+1): # 限制人数 print("第" + str(i) + "个人,收到" + str(round((money/100)/number,2)) + "元") else: print("指定人获取"+str(money/100)+"元") 复制代码
你看到没?这就是条件判断如果…就…逻辑产生的魔法。那么,这个条件判断的代码,要怎么码呢?
在Python宇宙,条件判断语句总共有三种表现形式,我们先从最简单的单向判断:if开始说起:
单向判断:if代表什么呢?我们知道在发红包的时候,如果专属红包超过200元,就会提示单个红包金额不可超过200元。
你会发现,上面的示例中,有一个如果...就。那么,我们用代码翻译这段话,就可以用if来表述,下面,请你来运行一下下方代码。
# 为单个红包面额 money = 201 # 条件:如果专属模式单个红包超过200元 if money > 200: # 结果:显示‘单个红包金额不可超过200元’的结果 print('单个红包金额不可超过200元') 复制代码
那么,这段代码是如何实现的呢?
首先,第一行代码,用赋值运算符=对当前情况进行赋值:将红包面额201赋值给变量---红包面额
第二步,确定if条件:如果变量money的值>200时,就执行冒号后,下一行的命令。
第三步,用print()命令打印出结果:单个红包金额不可超过200元。所以,if语句的单向判断逻辑,我们可以这样归纳:
在这里,你可能注意到了一个细节:在条件判断代码中的冒号 : 后、下一行内容的前面,会空几个格,但这是为什么呢?
首先,在计算机的沟通语言中,空格的学名叫缩进,比如我们写文章都要空两个格,这就叫首行缩进。 对于Python而言,冒号和缩进是一种语法。它会帮助Python区分代码之间的层次,理解条件执行的逻辑及先后顺序。【注:缩进是四个空格或一个Tab键】
并且,在if条件语言中,缩进不需要我们手动按空格键。当你用英文输入法打:后按回车,我们的开发工具(用来编写Python代码的程序)为了方便大家编程,会自动实现下一行代码,向右缩进的功能。
此时,被缩进的内容(print()
函数)和if条件语句组成了一个代码块(一个整体),成为了if条件下的内部命令。
这意味着:如果赋值满足if条件,计算机就会准确执行if条件内部的命令(即缩进的代码块)。
那么下面,请你运行下面这个代码,看看运行结果是什么。
# 为单个红包面额 money = 201 # 条件:如果专属模式单个红包超过200元 if money > 200: # 结果:显示‘单个红包金额不可超过200元’的结果 print('单个红包金额不可超过200元') 复制代码
执行上述代码,控制台提示错误:IndentationError: expected an indented block
翻译一下就是缩进错误:期望一个缩进块
这是因为,当我们去掉缩进时,if条件和print命令成为了两个不同的代码组,属于平行关系。你看:if条件下面,缺少了可以执行的动作。我们想一下:无论条件成不成立,都不会执行什么操作,这个条件的存在没有任何意义。