分支结构
分支结构是由if语句来实现的
if语句:
1.判断一个条件,如果这个条件成立,就执行其包含(通过缩进实现)的莫条语句或某个代码
if 3 > 5:
print("我在里面")
print("我也在里面")
print("我在外面")
这里面就是假的,说明不会打印缩进里面的内容,而是会打印缩进外面的print(“我在外面”)
2.如果条件成立,就执行其包含的某条语句或某个代码块
如果条件不成立,就执行另外的某条语句或某个代码块
if "小甲鱼" =="小姐姐":
print("小甲鱼是小姐姐")
else:
print("小甲鱼不是小姐姐!")
结果非常简单,就是 “小甲鱼不是小姐姐” 因为 小甲鱼一定不等于小姐姐,所以就会执行else结构语句。
3.判断多个条件,如果第一个条件不成立,则继续判断第二个,第二个不成立就继续判断第三个,第三个不成立就以此类推
score = input("请输入你的分数:")
score =int(score)
if 0 < score < 60:
print("D")
elif 60 <= score < 80:
print("C")
elif 80 <= score < 90:
print("B")
elif 90 <= score < 100:
print("A")
elif score == 100:
print("S")
4.就是在第三种情况下添加一个else,表示上面所有的条件均不成立的情况下,执行某条语句或某个代码块
score = input("请输入你的分数:")
score =int(score)
if 0 < score < 60:
print("D")
elif 60 <= score < 80:
print("C")
elif 80 <= score < 90:
print("B")
elif 90 <= score < 100:
print("A")
elif score == 100:
print("S")
else:
print("请输入一个0-100之间的数值!")
5.条件表达式
就是将一个完整的if,else 结构整合成一个表达式
即:
条件成立时执行的语句 if 条件 else 条件不成立时执行的语句
比如,源代码是这样的
age = 16
if age < 18:
print("抱歉,未满18随禁止访问")
else:
print("欢迎您来")
那么将它改成条件表达式就是
print("抱歉,未满18岁禁止访问") if age < 18 else print("欢迎您来。")
分支结构的嵌套
就是在if else语句中进行套娃,展示一下
age =18
isMale = Ture
if age < 18:
print("抱歉。未满18岁禁止访问。")
else:
if isMale :
print("任你选购")
else:
print("抱歉,本店不适合小公主~")
else语句:
当循环体不再为真时,else语句才会被执行。
我们先举个例子说明:
i = 1
while i < 5:
print("循环外,i的值是", i)
i += 1
else:
print("循环外,i的值是", i)
这段代码的运行结果是:
循环内,i的值是 1
循环内,i的值是 2
循环内,i的值是 3
循环内,i的值是 4
循环外,i的值是 5
但是我们需要注意的就是,当这段代码删去else,即:
i = 1
while i < 5:
print("循环外,i的值是", i)
i += 1
print("循环外,i的值是", i)
此时,这段代码的运行结果,与上一段未删除else的结果,完全相同,那么else语句的的作用到底是什么呢?
大家不要忘了break语句,break语句是一个跳出循环的语句,那么它跳出循环之后,我们的条件依旧为真,那么此时else语句依旧不会被执行,因为else语句的定义就是条件不再为真时,else语句才会被执行、我们举个例子说明:
i = 1
while i < 5:
print("循环外,i的值是", i)
if i == 2:
break
i += 1
print("循环外,i的值是", i)
这段代码的运行结果是:
循环内,i的值是 1
循环内,i的值是 2
当i = 2 的时候,受到break语句的影响,python立刻跳出循环,不会执行后面的else语句
那么else语句设置到底有什么作用!?
else语句的作用:
可以非常容易的检测到循环退出的状况
day = 1
while day <= 7:
answer = input ("今天有好好学习吗?")
if answer != "有":
break
day += 1
else:
print("非常棒,你已经坚持了七天连续学习")
这段代码,如果你一直回答“有” 七次以后,就会出现“非常棒,你已经坚持了七天连续学习”
但是你中间有一次 回答的不是“有”,那么就会直接跳出循环。不会执行else后面的语句,这样就可以反应出程序是从哪里开始跳出循环的。
循环结构的嵌套:
以九九乘法表的例子来介绍:
i = 1
while i <= 9:
j = 1
while j <= i
print(j,"*" ,i,"=", j * i, end=" ")
print()
i += 1
这就是一个典型的嵌套,外层循环操纵的是横排打印,内层循环操作的是竖排打印,然后带入相应的值就得到乘法表
#强调#
无论是break语句还是continue语句,它们只能作用于一层循环体
(其实我不太理解这个例子)
day = 1
hour = 1
while day <=7:
while hour <=8:
print("今天我一定要坚持学习八个小时!")
hour +=1
if hour > 1:
break
day +=1
如果break语句跳出两次循环,那么说明“今天我一定要坚持学八个小时”会打印八次
如果break语句跳出一次循环,那么说明“今天我一定要坚持学八个小时”会打印七次
所以结论就是:无论是break语句还是continue语句,它们只能作用于一层循环体
循环结构
让程序不断重复一段代码
while循环
1.可以重复某一段代码
love = "yes"
while love == "yes"
input("今天你还爱我吗?")
再这段代码中,只要你一直输入 “yes” 代码就会一直进行,你输入的不是 “yes” 代码停止运行。
2.可以利用循环来进行计算
#从1加到1000000的和
i = 1
sum = 0
while i <= 1000000:
sum = sum +i
i = i + 1
print(sum)
3.死循环
如何操控和退出死循环
利用break语句
例如:
while Ture:
input("主人,我可以退出循环了吗?")
if answer == "可以!"
break
print("哎呀,我真的好累啊")
这段代码运行的时候,只要你回答的是“可以!”
那么就会立即跳出循环,并且不会执行后面的“哎呀,我好累啊”
但是如果,你回答的不是“可以!”那么就会一直重复这个循环。
以上的例子就是break语句的用法,我们都知道break语句是用来跳出循环的,那么还有一种跳出循环的语句是continue语句。
continue语句
:用来跳出循环,但是它只跳出本轮循环,还会回到循环体的条件判断位置,继续进行下一轮循环。
例如:
i = 0
while i < 10:
i += 1
if i % 2 == 0:
continue
print(i)
这段代码的运行结果就是 1 3 5 7 9
因为当 i 是偶数的时候,他就会跳出一次循环体,回到开头,去执行下一次循环。
for循环:
for循环的语法结构需要稍加记忆,如下:
for 变量 in 可迭代对象:
statement(S) statement译为“称述”
可迭代对象解释:就是指那些元素能够被单独提取出来的对象。例如:我们常说的字符串就是可迭代对象。
迭代的解释:就是比如"Fish"他是可迭代对象,那么你把“F” “i” “s” “h”一个一个的分离出来,这个过程就叫迭代。
例如:
for each in "FishC":
print(each)
那么这个代码的运行结果就是:”F“ ”i" "s" "h" "C"
其实,我们也可以通过while循环去实现这样一段代码,但是如果用到while循环,就需要使用len函数(用于获取一个对象的长度的函数)。后面会学。
2.利用for循环去算1加到1000000的和
错误示范:
sum = 0
for i in 1000000:
sum += 1
这样子python就会报错,那么报错的原因就是1000000它是整数,并不是可迭代对象,它不可以被迭代。
那么想要让1000000可以被迭代,就要用到 range(),它的作用就是帮你生成一个数字序列,
range()的用法:
range(stop)
range(start,stop)
range(start,stop,step)
注意:无论使用哪一种,它的参数都必须是整形,
1.使用第一种时,使用从0开始到stop的整数数列。举个例子:
for i in range(10):
print(i)
但是此时就是打印出来的是:0,1,2,3,4,5,6,7,8,9
但是如果你想打印出来的是0到10的数字,那么你就应该写range(11)
这样打印出来的值才会是0.1.2.3.4.5.6.7.8.9.10.
2.第二种用法:允许你决定开始和结束的两个位置,例子:
for i in range(5,10):
print(i)
这段代码的结果是5.6.7.8.9 没有10
3.第三种用法:它除了刚才那两个参数还可以指定你步进的跨度,例子:
for i in range (5,10,2):
print(i)
这断代码的结果是 5.7.9.
并且这个跨度的值还可以是一个负数,例子
for i in range(10,5,-2):
print(i)
这段代码的结果是:10.8.6
现在开始写利用for循环从1加到1000000的代码
sum = 0
for i in range (1000001)
sum += i
print(sum)
结果就是500000500000
最后for循环和while循环一样,都支持嵌套语句,也可以搭配break语句和continue语句,例如:
#找出10以内的所有素数
素数:大于1的自然数中,除了1与其本身,无法被其他整数整除的数字叫做素数
for i in range(2,10):
for x in range(2,n):(这个就是for的嵌套,准备进行逐一比对)
if n % x == 0:
print(n,"=",x "*",n//x)
break
else:
print(n,"是一个素数")
不太理解最后一段代码!我完了再研究一下。