栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

P15~P19 分支和循环

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

P15~P19 分支和循环

一、分支结构  __if语句
(一)判断一个条件,如果这个条件成立,就执行其包含的某条语句或某个代码块。

【语法结构】

​​​​​​​if condition:
    statement(s)

(二)判断一个条件:
        如果条件成立,就执行其包含的某条语句或某个代码块。
        如果条件不成立,就执行另外的某条语句或某个代码块。

【语法结构】

​​​​​​​if condition:
    statement(s)
else:
    statement(s)

(三)判断多个条件:
        如果第1个条件不成立,则继续判断第2个条件;
        如果第2个条件还不成立,则继续判断第3个条件... ...

【语法结构】

​​​​​​​if condition1:
    statement(s)
elif condition2:
    statement(s)
elif condition3:
    statement(s)
...

【好处】效率高!! 


 (四)第4种是在第3种的情况下添加一个else,表示上面所有的条件均不成立的情况下,执行某条语句或某个代码块。

【语法结构】

​​​​​​​if condition1:
    statement(s)
elif condition2:
    statement(s)
elif condition3:
    statement(s)
...
else:
    statement(s)

 示例:



(五)条件表达式 

【语法结构】

条件成立时执行的语句 if condition else 条件不成立时执行的语句


例,原语句:

>>> age = 16
>>> if age < 18:
	print("未满18禁止进入哦~")
else:
	print("欢迎您,常来玩哦~^o^")

	
未满18禁止进入哦~

条件表达式:

>>> print("未满18禁止进入哦~") if age < 18 else print("欢迎您,常来玩哦~^o^")
未满18禁止进入哦~

 例,原语句:

>>> a = 3
>>> b = 5
>>> if a < b:
	small = a
else:
	small = b

 条件表达式:

>>> a = 3
>>> b = 5
>>> small = a if a < b else b

  例,原语句:

score = 66

if 0 <= score < 60:
    level = "D"
elif 60 <= score < 80:
    level = "C"
elif 80 <= score < 90:
    level = "B"
elif 90 <= score < 100:
    level = "A"
elif score == 100:
    level = "S"
else:
    level = "请输入0 ~ 100之间的分值~"

print(level)
C

 条件表达式:

score = 66
level = ("D" if 0 <= score < 60 else
             "C" if 60 <= score < 80 else
	     "B" if 80 <= score < 90 else
	     "A" if 90 <= score < 100 else
	     "S" if score == 100 else
	     "请输入0 ~ 100之间的分值~")
print(level)
C


(六)分支结构的嵌套 

【语法结构】

​​​​​​​if condition1:
    statement(s)
else condition2:
    ​​​​​​​if condition2-1:
        statement(s)
    else condition2-2:
        ​​​​​if condition2-2-1:
            statement(s)
        else condition2-2-2:
            ...
​ 注意!!颜值即正义

二、循环结构  __while循环 和 for循环
一、while循环 (一)满足条件则不停循环。

【语法结构】

while condition1:
    statement(s)

 例①:

>>> love = "yes"
>>> while love == "yes":
	love = input("今天你还爱我么?")

	
今天你还爱我么?(输入)yes
今天你还爱我么?(输入)yes
今天你还爱我么?(输入)yes
今天你还爱我么?(输入)no
>>>(结束循环)

 例②:

>>> while True:
	print("我是Python工具人,我要不停地工作!")

	
我是Python工具人,我要不停地工作!
我是Python工具人,我要不停地工作!
我是Python工具人,我要不停地工作!
我是Python工具人,我要不停地工作!
我是Python工具人,我要不停地工作!
我是Python工具人,我要不停地工作!
我是Python工具人,我要不停地工作!
我是Python工具人,我要不停地工作!
我是Python工具人,我要不停地工作!
我是Python工具人,我要不停地工作!
我是Python工具人,我要不停地工作!
我是Python工具人,我要不停地工作!
我是Python工具人,我要不停地工作!
我是Python工具人,我要不停地工作!
我是Python工具人,我要不停地工作!
我是Python工具人,我要不停地工作!
我是Python工具人,我要不停地工作!
...

(Ctrl + C)
Traceback (most recent call last):
  File "", line 2, in 
    print("我是Python工具人,我要不停地工作!")
KeyboardInterrupt
【存在问题】无限循环,只有【Ctrl + C】才能手动停止...如何让其自己跳出循环?
(二)break语句 
>>> while True:
	answer = input("主人,我可以退出循环了嘛?")
	if answer == "可以":
		print("主人我爱你!mua~")
		break
	print("唉,好累~~")


主人,我可以退出循环了嘛?(输入)no
唉,好累~~
主人,我可以退出循环了嘛?(输入)不行!
唉,好累~~
主人,我可以退出循环了嘛?(输入)还说?
唉,好累~~
主人,我可以退出循环了嘛?(输入)闭嘴!
唉,好累~~
主人,我可以退出循环了嘛?(输入)可以
主人我爱你!mua~
>>>(结束循环)

(三)continue语句__和break一样,跳出循环。
        但只是会跳出本轮循环 ,直接循环下一个循环。
>>> i = 0
>>> while i < 10:
	i += 1
	if i % 2 == 0:
		continue
	print(i)

	
1
3
5
7
9

(四)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)

======================================================	
循环内,i的值是 1
循环内,i的值是 2
循环内,i的值是 3
循环内,i的值是 4
循环外,i的值是 5
>>> 

 【原因】用break语句跳出来,就不会再执行else了:

i = 1
while i < 5:
    print("循环内,i的值是", i)
    if i == 2:
        break
    i += 1
else:
    print("循环外,i的值是", i)

======================================================	
循环内,i的值是 1
循环内,i的值是 2
>>> 

while 和 else 的结合:

'''只要是回答【有】,就会继续【i += 1】;
    只要有一次回答除了【有】以外的任何,就会【break】跳出循环'''

day = 1
while day <= 7:
    answer = input("今天又好好学习么?")
    if answer != "有":
        break
    day += 1
else:
    print("非常棒,你已经连续坚持7天学习了!!!")

======================================================
今天又好好学习么?有
今天又好好学习么?有
今天又好好学习么?有
今天又好好学习么?有
今天又好好学习么?有
今天又好好学习么?有
今天又好好学习么?有
非常棒,你已经连续坚持7天学习了!!!
>>> 
======================================================
今天又好好学习么?有
今天又好好学习么?没
>>> 

(五)循环结构的嵌套(nested loop)  例,打印99乘法表:
i = 1
while i <= 9:
    j = 1
    while j <= i:
        print(j,"*",i,"=", j * i , end=" ")  #【end】保证不换行
        j += 1
    print()   #此处【print()的作用是换行】
    i += 1    
    

======================================================
1 * 1 = 1 
1 * 2 = 2 2 * 2 = 4 
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9 
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16 
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36 
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81 
>>> 
【关于break】 每次只能跳出一层循环体,而非所有循环体。

例:

day = 1
hour = 1
while day <= 7:
    while hour <= 8:
        print("我要学习8小时")
        hour += 1
        if hour > 1:
            break
    day += 1

======================================================
我要学习8小时
我要学习8小时
我要学习8小时
我要学习8小时
我要学习8小时
我要学习8小时
我要学习8小时
>>> 

(自己读一遍代码,发现:
        如果break可以跳出所有循环,结果只会有1遍;
        如果break只可跳出一层循环,结果会有7遍(7天)。) 

二、for循环 

【语法结构】

for 变量 in 可迭代对象:
    statement(s)

 例①:

>>> for each in "金小川":
	print(each)

	
金
小
川
>>> 

【解释】【for】让【“金小川”】中的每一个字符赋值给了【each】,然后依次【print】


例②(也可以用while实现,但是会别扭且难):

>>> i = 0
>>> while i < len("金小川"):
	print("金小川"[i])
	i += 1

	
金
小
川
>>> 

【解释】
        len():全称lenth,作用是取出字符串长度,返回值是int类型。


【疑问】可不可以用 for 实现和 while 相同的功能:计算 1 + ... + 1000 的总和?

试:

>>> sum = 0
>>> for i in 1000:
	sum += 1

	
Traceback (most recent call last):
  File "", line 1, in 
    for i in 1000:
TypeError: 'int' object is not iterable
>>> 

        Traceback (most recent call last):
          File "", line 1, in
            for i in 1000:
        TypeError: 'int' object is not iterable

【解释】【1000】是整数(int),不可以作为迭代对象
​​​​​​​​​​​​​​​​​​【解决方法】range()函数  __参数只可以是整数型
                range(stop)
                range(start, stop)
                range(start, stop, step)

(1) range(stop)  __生成一个从0开始到stop的一个整数数列:

例:

>>> for i in range(10):
	print(i)

	
0
1
2
3
4
5
6
7
8
9
>>> 
'''注意:python经典顾头不顾腚
        如果想打印到10,就要【range(11)】'''
(2) range(start, stop)  __生成一个从start开始到stop的一个整数数列:

例:

>>> for i in range(5,10):
	print(i)

	
5
6
7
8
9
>>> 
(3) range(start, stop, step)  __生成一个从start开始到stop、跨度为step的一个整数数列:

例:

>>> for i in range(5,10, 2):
	print(i)

	
5
7
9
>>>
>>> for i in range(10,5, -2):
	print(i)

	
10
8
6
>>> 

【求和的正确写法(刚才的问题)】

>>> sum = 0
>>> for i in range(1001):
	sum += i

	
>>> print(sum)
500500

【课后作业】找出10以内所有素数!
for i in range(2, 10):
    for x in range(2, i):
        if i % x == 0:
            print(i,"=", x, "*", i // x)
            break
    else:
        print(i, "是一个素数")

======================================
2 是一个素数
3 是一个素数
4 = 2 * 2
5 是一个素数
6 = 2 * 3
7 是一个素数
8 = 2 * 4
9 = 3 * 3

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/269542.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号