Python基础之分支循环
1.分支
1.1 判断条件,若条件成立,执行其包含的某条语句或者代码块
其代码结构如下图
实例
执行结果
我在里面
我也在里面~
我在外面~
1.2 判断条件,若条件成立,执行其包含的某条语句或者代码块,若条件不成立,执行另外的某条语句或者代码块
其代码结构如下图
实例
执行结果
乐乐哥不是小姐姐!
1.3 判断多个条件,如果第1个条件不成立立,则继续判断第2个条件,如果第2个条件还不成立则接着判断第3个条件.……
其代码结构如下图
实例第一种写法及流程图
实例第二种写法及流程图
1.4 第4种是在第3种的情况下添加一个else表示上面所有的条件均不成立的情况下,执行某:条语句或某个代码块
其语法结构如下
实例
执行结果
请输入你的分数:108
请输入0~100之间的分值!
1.5 条件成立时执行的语句 + if + condition + else + 条1件不成立时执行的语句
看下面两种写法,实例1
写法1
>>> age = 16
>>> if age < 18:print("抱歉,未满18周岁禁止访问,")
else:print("欢迎您来O")
抱歉,未满18周岁禁止访问, //执行结果
写法2
>>> age = 16
>>> print("抱歉,未满18周岁禁止访问,") if age < 18 else print("欢迎你来O")
抱歉,未满18周岁禁止访问, //执行结果
以上两种写法,执行结果都一致,但是写法2的语句只有一句,而写法1有四句,所以在此看来第二种写法更方便,执行效率更高;
实例2上代码
>>> a = 3
>>> b = 5
>>> if a < b:small = a
else:small = b
>>> print(small)
3
>>> small = a if a < b else small = b //看似没有问题,为什么报错呢?这种写法的错误在哪里??
SyntaxError: can't assign to conditional expression
注意: 当if后面的条件成立时small = a,条件不成立small = b
>>> small = a if a < b else small = b
大家可否记得java中的三目表达式
small = (a > b) ? 2 : 3 //若a>b时,small=2 若a>b不成立,则small=3
由此大家可以看出上面的语句的问题所在吗?那咱们一起看看它的执行顺序
small = a a<b 成立
small = small = b a<b不成立
也就是说small = ???后面的内容取决于if后边的条件是否成立,条件成立small = a没有问题,当条件不成立时,small = (small = b)就相当于是把后面的(small = b)当成一个整体赋值给small,而这样的语法在python是有错误的,看下面的报错语句
>>> small = (small = b)
SyntaxError: invalid syntax
正确写法
>>> small = a if a < b else b //当条件不成立时,直接将b的值赋值给small
>>> print(small)
3
2. 循环
2.1 while循环
语法结构如下图所示:
**实例1:**循环条件成立继续执行,不成立则结束
>>> love = "yes"
>>> while love == "yes":love = input("今天你还爱我吗?") //输入yes程序继续,输入yes以外的内容程序结束今天你还爱我吗?yes
今天你还爱我吗?yes
今天你还爱我吗?no
**实例2:**实现从1一直累加到1000000的结果
>>> i = 1
>>> sum = 0
>>> while i <= 1000000:sum += i //等价于sum = sum + ii += 1 //等价于i = i + 1>>> print(sum) //将最终的累加结果打印出来
500000500000
==break语句的使用:==直接跳出循环
>>> while True:answer = input("哈喽,我可以下班了吗?")if answer == "可以":break //当上一句的if语句条件成立时,出触发break语句,直接跳出循环print("好累啊!") //当执行break时,这行语句不会执行,说明程序已经跳出此循环哈喽,我可以下班了吗?继续
好累啊!
哈喽,我可以下班了吗?加油哦
好累啊!
哈喽,我可以下班了吗?不幸和
好累啊!
哈喽,我可以下班了吗?坚持
好累啊!
哈喽,我可以下班了吗?努力家班
好累啊!
哈喽,我可以下班了吗?可以
>>>
==continue语句的使用:==跳出本轮循环
实例
>>> while i < 10:i += 1if i % 2 == 0:continue //当上面的if条件成立时触发continue语句,会跳出本轮循环,执行下一轮的循环print(i) //当if语句的条件不成立时执行1
3
5
7
9
>>>
2.2 嵌套循环
**实例:**九九乘法表
i = 1
while i<= 9:j = 1while j <= i: //当j<i时,所有的内容在一行显示print(j, "*", i, "=", i*j, end=' ') //将结果打印出来,end=' '代表将print自带的末尾加一个换行转化为在末尾添加两个空格显示j += 1print()i += 1
关于end=“”
2.3 for循环
其代码结构为如下图所示:
前提知识: range()函数
注意range()带一个参数的函数生成的数据是从零开始的,所以要生成0-10 的数据队列,其中的参数应该是11
1.range(stop) 会生成一个从0-stop的一个整数序列,是一个整数数据数列
比如生成1-10的一个数据队列,如下代码
>>> xulie = range(11) //将生成的数据队列对象赋值给xulie
>>> for i in xulie: //对数据对象进行for循环遍历print(i) //打印数据对象的所有值0
1
2
3
4
5
6
7
8
9
10
>>>
2.range(start, stop)会生成一个从start-stop的一个整数序列
比如生成5-15的一个数据队列
>>> xulie = range(5,15) //生成一个5-15的数据队列(不包含15),并赋值给xulie
>>> for i in xulie: //遍历数据对象print(i) //打印输出数据对象的内容5
6
7
8
9
10
11
12
13
14
>>>
3.range(start, stop, step)会生成一个从start开始,每次以step的步调递增或者递减的序列
比如生成一个从2开始每次以3为步调的序列
>>> xulie = range(2, 13, 3) //生成一个以2开始且步调为3的且13为截止的数据对象,并赋值给xulie
>>> for i in xulie: //遍历xulie的每一个数据print(i)2
5
8
11
>>>
for循环实例1: 实现1-1000000的叠加和
>>> sum = 0 //定义加和变量
>>> for i in range(1000001): //遍历每一个加和变量sum += i //实现累加>>> print(sum) //打印最终结果
500000500000
>>>
for循环实例2: 实现找出2,10之间的素数
>>> for n in range(2,10):for x in range(2,n):if n % x == 0:print(n, "=", x, "*", n//x) //能别其他数整除说明不是素数break //不是素数则跳出本层循环else:print(n,"是一个素数") //内层循环都执行一次且程序跳出本层循环执行else模块,说明这个数是素数,打印输出2 是一个素数
3 是一个素数
4 = 2 * 2
5 是一个素数
6 = 2 * 3
7 是一个素数
8 = 2 * 4
9 = 3 * 3