day3
day3
仰天大笑出门去,我辈岂是蓬蒿人。
分支国度一日游
To be or not to be, that is a question.
接下来将进入三大国度之一的分支国度(分支结构),也称为选择国度(选择结构)。
简单介绍
前面所接触过的所有python的代码,我们发现都是从上到下一条条语句的执行,我们称这种执行方式为顺序执行。但是如果现在要求编程判断一个数字是正数还是负数,正数输出"正",负数输出"负",这时候就会发现对于一个问题的处理,有两种解决方法,同时这两种解决方法的代码只会执行其中的一种,这就是我们平常所说的分支顺序,也就是程序开始做出一种选择。
if语句的使用
python中的分支结构的语法也是依靠if
,elif
,else
构造的。这就是前面所说的关键字,读者可以尝试使用if
作为变量名,会发现python报错,因为python解释器中认为if
已经是具有特殊含义的单词了,也就是编写python的人已经抢先抢了这个单词的命名权了,所以我们不能再使用它作为其他的用途。(当然命名空间一出,还是可以操作一下的)
其基本框架如下:
# 单分支
if ...:
func1();
# 双分支
if ...:
func1();
else:
func2();
# 多分支
if ...:
func1();
elif ...:
func2();
else:
func3();
# 前面例子判断一个数是否是正数的编程
a = int(input('请输入一个数字:'))
if a > 0:
print('正')
else:
print('负')
注意这边的if
语句和C/C++中的区别,在python中代码块已经不是花括号括起来的区间了,而是更加简单的通过缩进来表示同一代码块中的内容。即如果代码连续并且保持相同的缩进就是同一个代码块。虽然对于缩进的空格数量没有严格要求,但是通常推荐为4个空格,出于工程上的方便以此要求,仅仅是建议。
多分支结构
多分支结构如下:
# 判断一个数字是正数,负数还是零
a = int(input("请输入一个数字:"))
if a > 0:
print('正数')
elif a == 0:
print('零')
else:
print('负数')
多分支结构其实就是处理具有多种选择的时候的一种写法。注意这边是elif
而不是else if
,注意和C的区别。
嵌套分支结构
当然,嵌套分支结构也是非常重要的一个部分。有时候可能在其中的一个分支中还要根据当前情况做出不同的选择,此时,嵌套分支就出现了。
# 判断一个数字是正数,负数还是零
a = int(input("请输入一个数字:"))
if a > 0:
print('正数')
else:
if a == 0:
print('零')
else:
print('负数')
注意这边和上面的多分支结构的功能是一样的,只是写法的不同。一般我们认为代码能够不嵌套就不要嵌套,所谓的扁平化,现在代码量还很小,暂时没有影响。但是试想,如果有十层嵌套,那么读起代码来是不是非常费力,要找哪个else对应哪个if都需要花费很多力气,这可与偷懒绝缘了。所以尽量少用嵌套结构,能用就用多分支结构。
课后练习
输入成绩,如果大于等于90,输出A,如果小于90但是大于等于90,输出B,如果小于80,但是大于等于70,输出C,如果小于70,但是大于等于60,输出D,如果小于60,输出E,如果大于100或者小于0,输出ERROR(人类的本质是复读机)
笔者代码:
score = int(input("请输入成绩:"))
if score > 100 or score < 0:
print('ERROR')
elif score >= 90:
print('A')
elif score >= 80:
print('B')
elif score >= 70:
print('C')
elif score >= 60:
print('D')
else:
print('E')
注意,多分支结构最多只会执行其中的一个分支,也就是按照从上到下的顺序执行,遇到第一个满足条件的地方进入执行其下方的代码,然后跳出整个分支结构。比如,输入90,其满足>=90,但也满足>=80,但是最后只会执行print('A')
。同时可以不写else
,仅由if
和elif
构成。
开平方
方式1:
小技巧,因为**
在python中是指数运算的意思,所以开平方可以直接写成
a ** 0.5
而不用像其他语言还要借用math库中的sqrt函数或者pow函数。
方式2:
import math
math.sqrt(a)
通过导入math库,调用里面的开平方的函数sqrt
随机数
python中随机数的一种获取方法
from random import randint # 将ranint导入进来
a = randint(1, 6) # 这就是获取从1到6中的一个整数,注意包括1和6
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)