湖北响应式网站设计制作,专业做淘宝网站推广,哈尔滨建设投资集团,山东省建设执业师网站
程序流程控制的三种结构
1.顺序结构
计算机执行程序的步骤是从上到下依次执行
2.选择结构#xff08;条件控制#xff09;
Python 条件语句是通过一条或多条语句的执行结果#xff08;True 或者 False#xff09;来决定执行的代码块。
可以通过下图来简单了解条件…
程序流程控制的三种结构
1.顺序结构
计算机执行程序的步骤是从上到下依次执行
2.选择结构条件控制
Python 条件语句是通过一条或多条语句的执行结果True 或者 False来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程: 代码执行过程
if 语句
Python中if语句的一般形式如下所示
if condition_1:statement_block_1
elif condition_2:statement_block_2
else:statement_block_3如果 “condition_1” 为 True 将执行 “statement_block_1” 块语句如果 “condition_1” 为False将判断 “condition_2”如果condition_2 为 True 将执行 “statement_block_2” 块语句如果 “condition_2” 为False将执行statement_block_3块语句
Python 中用 elif 代替了 else if所以if语句的关键字为if – elif – else。
注意
1、每个条件后面要使用冒号 :表示接下来是满足条件后要执行的语句块。2、使用缩进来划分语句块相同缩进数的语句在一起组成一个语句块。3、在 Python 中没有 switch…case 语句但在 Python3.10 版本添加了 match…case功能也类似详见下文。
Gif 演示 实例 以下是一个简单的 if 实例
var1 100
if var1:print (1 - if 表达式条件为 true)print (var1)var2 0
if var2:print (2 - if 表达式条件为 true)print (var2)
print (Good bye!)执行以上代码输出结果为 1 - if 表达式条件为 true 100 Good bye! 从结果可以看到由于变量 var2 为 0所以对应的 if 内的语句没有执行。
以下实例演示了狗的年龄计算判断
age int(input(请输入你家狗狗的年龄: ))
print()
if age 0:print(你是在逗我吧!)
elif age 1:print(相当于 14 岁的人。)
elif age 2:print(相当于 22 岁的人。)
elif age 2:human 22 (age -2)*5print(对应人类年龄: , human)### 退出提示
input(点击 enter 键退出)将以上脚本保存在dog.py文件中并执行该脚本
C:\Users\Lenovocd DesktopC:\Users\Lenovo\Desktoppython dog.py
请输入你家狗狗的年龄: 6对应人类年龄: 42
点击 enter 键退出以下为if中常用的操作运算符:
操作符描述小于小于或等于大于大于或等于等于比较两个值是否相等!不等于
# 程序演示了 操作符
# 使用数字
print(5 6)
# 使用变量
x 5
y 8
print(x y)以上实例输出结果 False False high_low.py文件演示了数字的比较运算
# 该实例演示了数字猜谜游戏
number 7
guess -1
print(数字猜谜游戏!)
while guess ! number:guess int(input(请输入你猜的数字))if guess number:print(恭喜你猜对了)elif guess number:print(猜的数字小了...)elif guess number:print(猜的数字大了...)执行以上脚本实例输出结果如下 C:\Users\Lenovo\Desktoppython high_low.py 数字猜谜游戏! 请输入你猜的数字2 猜的数字小了… 请输入你猜的数字3 猜的数字小了… 请输入你猜的数字9 猜的数字大了… 请输入你猜的数字7 恭喜你猜对了 if 嵌套
在嵌套 if 语句中可以把 if…elif…else 结构放在另外一个 if…elif…else 结构中。
if 表达式1:语句if 表达式2:语句elif 表达式3:语句else:语句
elif 表达式4:语句
else:语句脚本模式实例
numint(input(输入一个数字))
if num%20:if num%30:print (你输入的数字可以整除 2 和 3)else:print (你输入的数字可以整除 2但不能整除 3)
else:if num%30:print (你输入的数字可以整除 3但不能整除 2)else:print (你输入的数字不能整除 2 和 3)将以上程序保存到 test_if.py 文件中执行后输出结果为 C:\Users\Lenovo\Desktoppython test.py 输入一个数字5 你输入的数字不能整除 2 和 3 match…case
Python 3.10 增加了 match…case 的条件判断不需要再使用一连串的 if-else 来判断了。
match 后的对象会依次与 case 后的内容进行匹配如果匹配成功则执行匹配到的表达式否则直接跳过_ 可以匹配一切。
语法格式如下
match subject:case pattern_1:action_1case pattern_2:action_2case pattern_3:action_3case _:action_wildcardcase _: 类似于 C 和 Java 中的 default:当其他 case 都无法匹配时匹配这条保证永远会匹配成功。
def http_error(status):match status:case 400:return Bad requestcase 404:return Not foundcase 418:return Im a teapotcase _:return Somethings wrong with the internetmystatus400
print(http_error(400))以上是一个输出 HTTP 状态码的实例输出结果为 Bad request 一个 case 也可以设置多个匹配条件条件使用 隔开例如
...case 401|403|404:return Not allowed3.循环结构
Python 中的循环语句有 for 和 while。
Python 循环语句的控制结构图如下所示
while 循环
Python 中 while 语句的一般形式
while 判断条件(condition)执行语句(statements)……执行流程图如下 #mermaid-svg-EsfHSYcysmhpx6Uh {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-EsfHSYcysmhpx6Uh .error-icon{fill:#552222;}#mermaid-svg-EsfHSYcysmhpx6Uh .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-EsfHSYcysmhpx6Uh .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-EsfHSYcysmhpx6Uh .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-EsfHSYcysmhpx6Uh .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-EsfHSYcysmhpx6Uh .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-EsfHSYcysmhpx6Uh .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-EsfHSYcysmhpx6Uh .marker{fill:#333333;stroke:#333333;}#mermaid-svg-EsfHSYcysmhpx6Uh .marker.cross{stroke:#333333;}#mermaid-svg-EsfHSYcysmhpx6Uh svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-EsfHSYcysmhpx6Uh .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-EsfHSYcysmhpx6Uh .cluster-label text{fill:#333;}#mermaid-svg-EsfHSYcysmhpx6Uh .cluster-label span{color:#333;}#mermaid-svg-EsfHSYcysmhpx6Uh .label text,#mermaid-svg-EsfHSYcysmhpx6Uh span{fill:#333;color:#333;}#mermaid-svg-EsfHSYcysmhpx6Uh .node rect,#mermaid-svg-EsfHSYcysmhpx6Uh .node circle,#mermaid-svg-EsfHSYcysmhpx6Uh .node ellipse,#mermaid-svg-EsfHSYcysmhpx6Uh .node polygon,#mermaid-svg-EsfHSYcysmhpx6Uh .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-EsfHSYcysmhpx6Uh .node .label{text-align:center;}#mermaid-svg-EsfHSYcysmhpx6Uh .node.clickable{cursor:pointer;}#mermaid-svg-EsfHSYcysmhpx6Uh .arrowheadPath{fill:#333333;}#mermaid-svg-EsfHSYcysmhpx6Uh .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-EsfHSYcysmhpx6Uh .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-EsfHSYcysmhpx6Uh .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-EsfHSYcysmhpx6Uh .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-EsfHSYcysmhpx6Uh .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-EsfHSYcysmhpx6Uh .cluster text{fill:#333;}#mermaid-svg-EsfHSYcysmhpx6Uh .cluster span{color:#333;}#mermaid-svg-EsfHSYcysmhpx6Uh div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-EsfHSYcysmhpx6Uh :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 如果条件为true 继续判断 如果条件为false 开始 判断条件 执行代码块 结束 执行 Gif 演示 同样需要注意冒号和缩进。另外在 Python 中没有 do…while 循环。
以下实例使用了 while 来计算 1 到 100 的总和
n 100
sum 0
counter 1
while counter n:sum sum countercounter 1print(1 到 %d 之和为: %d % (n,sum))执行结果如下 1 到 100 之和为: 5050 无限循环 我们可以通过设置条件表达式永远不为 false 来实现无限循环实例如下
#!/usr/bin/python3var 1
while var 1 : # 表达式永远为 truenum int(input(输入一个数字 :))print (你输入的数字是: , num)print (Good bye!)执行以上脚本输出结果如下 输入一个数字 :5 你输入的数字是: 5 输入一个数字 : 你可以使用 CTRLC 来退出当前的无限循环。
无限循环在服务器上客户端的实时请求非常有用。
while 循环使用 else 语句
如果 while 后面的条件语句为 false 时则执行 else 的语句块。
语法格式如下
while expr:statement(s)
else:additional_statement(s)expr 条件语句为 true 则执行 statement(s) 语句块如果为 false则执行 additional_statement(s)。
循环输出数字并判断大小
count 0
while count 5:print (count, 小于 5)count count 1
else:print (count, 大于或等于 5)执行以上脚本输出结果如下 0 小于 5 1 小于 5 2 小于 5 3 小于 5 4 小于 5 5 大于或等于 5 简单语句组
类似 if 语句的语法如果你的 while 循环体中只有一条语句你可以将该语句与 while 写在同一行中 如下所示
flag 1
while (flag): print (欢迎访问泰山的技术博客!)
print (Good bye!)注意以上的无限循环你可以使用 CTRLC 来中断循环。
执行以上脚本输出结果如下 欢迎访问泰山的技术博客! 欢迎访问泰山的技术博客! 欢迎访问泰山的技术博客! 欢迎访问泰山的技术博客! 欢迎访问泰山的技术博客! …… for循环语句
Python for 循环可以遍历任何可迭代对象如一个列表或者一个字符串。
for循环的一般格式如下
for variable in sequence:statements
else:statements流程图 #mermaid-svg-HT1W51UAahOdl1Mg {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-HT1W51UAahOdl1Mg .error-icon{fill:#552222;}#mermaid-svg-HT1W51UAahOdl1Mg .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-HT1W51UAahOdl1Mg .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-HT1W51UAahOdl1Mg .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-HT1W51UAahOdl1Mg .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-HT1W51UAahOdl1Mg .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-HT1W51UAahOdl1Mg .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-HT1W51UAahOdl1Mg .marker{fill:#333333;stroke:#333333;}#mermaid-svg-HT1W51UAahOdl1Mg .marker.cross{stroke:#333333;}#mermaid-svg-HT1W51UAahOdl1Mg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-HT1W51UAahOdl1Mg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-HT1W51UAahOdl1Mg .cluster-label text{fill:#333;}#mermaid-svg-HT1W51UAahOdl1Mg .cluster-label span{color:#333;}#mermaid-svg-HT1W51UAahOdl1Mg .label text,#mermaid-svg-HT1W51UAahOdl1Mg span{fill:#333;color:#333;}#mermaid-svg-HT1W51UAahOdl1Mg .node rect,#mermaid-svg-HT1W51UAahOdl1Mg .node circle,#mermaid-svg-HT1W51UAahOdl1Mg .node ellipse,#mermaid-svg-HT1W51UAahOdl1Mg .node polygon,#mermaid-svg-HT1W51UAahOdl1Mg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-HT1W51UAahOdl1Mg .node .label{text-align:center;}#mermaid-svg-HT1W51UAahOdl1Mg .node.clickable{cursor:pointer;}#mermaid-svg-HT1W51UAahOdl1Mg .arrowheadPath{fill:#333333;}#mermaid-svg-HT1W51UAahOdl1Mg .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-HT1W51UAahOdl1Mg .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-HT1W51UAahOdl1Mg .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-HT1W51UAahOdl1Mg .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-HT1W51UAahOdl1Mg .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-HT1W51UAahOdl1Mg .cluster text{fill:#333;}#mermaid-svg-HT1W51UAahOdl1Mg .cluster span{color:#333;}#mermaid-svg-HT1W51UAahOdl1Mg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-HT1W51UAahOdl1Mg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 下一个元素 继续 循环完所有元素 开始 集合中的元素 代码块 结束 Python for 循环实例
sites [Baidu, Google,Tarzan,Taobao]
for site in sites:print(site)以上代码执行输出结果为 Baidu Google Tarzan Taobao 也可用于打印字符串中的每个字符
word Tarzanfor letter in word:print(letter)以上代码执行输出结果为 t a r z a n 整数范围值可以配合 range() 函数使用
# 1 到 5 的所有数字
for number in range(1, 6):print(number)以上代码执行输出结果为 1 2 3 4 5 for…else
在 Python 中for…else 语句用于在循环结束后执行一段代码。
语法格式如下
for item in iterable:# 循环主体
else:# 循环结束后执行的代码当循环执行完毕即遍历完 iterable 中的所有元素后会执行 else 子句中的代码如果在循环过程中遇到了 break 语句则会中断循环此时不会执行 else 子句。
for x in range(6):print(x)
else:print(Finally finished!)执行脚本后输出结果为 0 1 2 3 4 5 6 Finally finished! 以下 for 实例中使用了 break 语句break 语句用于跳出当前循环体不会执行 else 子句
sites [Baidu, Google,Tarzan,Taobao]
for site in sites:if site Tarzan:print(泰山博客!)breakprint(循环数据 site)
else:print(没有循环数据!)
print(完成循环!)执行脚本后在循环到 Tarzan时会跳出循环体 循环数据 Baidu 循环数据 Google 泰山博客! 完成循环! range() 函数
Python3 range() 函数返回的是一个可迭代对象类型是对象而不是列表类型 所以打印的时候不会打印列表。 Python3 list() 函数是对象迭代器可以把 range() 返回的可迭代对象转为一个列表返回的变量类型为列表。
函数语法
range(stop)
range(start, stop[, step])参数说明
start: 计数从 start 开始。默认是从 0 开始。例如 range(5) 等价于 range(0 5)stop: 计数到 stop 结束但不包括 stop。例如range(0 5) 是 [0, 1, 2, 3, 4] 没有 5step步长默认为 1。例如range(0 5) 等价于 range(0, 5, 1)
如果你需要遍历数字序列可以使用内置 range() 函数。它会生成数列例如:
for i in range(5):
... print(i)
...
0
1
2
3
4也可以使 range() 以指定数字开始并指定不同的增量(甚至可以是负数有时这也叫做’步长’): for i in range(0, 10, 3):
... print(i)
...
0
3
6
9注意: print(i) 要缩进空格。 负数 for i in range(-10, -100, -30):
... print(i)
...
-10
-40
-70您可以结合 range() 和 len() 函数以遍历一个序列的索引,如下所示: a [Google, Baidu, Tarzan, Taobao, QQ]for i in range(len(a)):
... print(i,a[i])
...
0 Google
1 Baidu
2 Tarzan
3 Taobao
4 QQ还可以使用 range() 函数来创建一个列表
list(range(5))
[0, 1, 2, 3, 4]break 和 continue 语句及循环中的 else 子句
break 执行流程图 continue 执行流程图 while 语句代码执行过程 for 语句代码执行过程 break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止任何对应的循环 else 块将不执行。
continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句然后继续进行下一轮循环。
实例 while 中使用 break
n 0
while n 5:n 1if n 3:breakprint(n)输出结果为 1 2 while 中使用 continue
n 0
while n 5:n 1if n 3:continueprint(n)输出结果为 1 2 4 5 更多实例如下
for letter in Tarzan: # 第一个实例if letter z:breakprint (当前字母为 :, letter)var 10 # 第二个实例
while var 0: print (当前变量值为 :, var)var var -1if var 5:break执行以上脚本输出结果为 当前字母为 : T 当前字母为 : a 当前字母为 : r 当前变量值为 : 10 当前变量值为 : 9 当前变量值为 : 8 当前变量值为 : 7 当前变量值为 : 6 以下实例循环字符串 Tarzan碰到字母 z 跳过输出
for letter in Tarzan: # 第一个实例if letter z: # 字母为 o 时跳过输出continueprint (当前字母 :, letter)var 5 # 第二个实例
while var 0: var var -1if var 3: # 变量为 3 时跳过输出continueprint (当前变量值 :, var)执行以上脚本输出结果为 当前字母 : T 当前字母 : a 当前字母 : r 当前字母 : a 当前字母 : n 当前变量值 : 4 当前变量值 : 2 当前变量值 : 1 当前变量值 : 0 循环语句可以有 else 子句它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行但循环被 break 终止时不执行。
如下实例用于查询质数的循环例子:
for n in range(2, 10):for x in range(2, n):if n % x 0:print(n, 等于, x, *, n//x)breakelse:# 循环中没有找到元素print(n, 是质数)执行以上脚本输出结果为 2 是质数 3 是质数 4 等于 2 * 2 5 是质数 6 等于 2 * 3 7 是质数 8 等于 2 * 4 9 等于 3 * 3 pass 语句
Python pass是空语句是为了保持程序结构的完整性。
pass 不做任何事情一般用做占位语句如下实例
while True:
... pass # 等待键盘中断 (CtrlC)最小的类:
class MyEmptyClass:
... pass以下实例在字母为 o 时 执行 pass 语句块:
for letter in Tarzan: if letter z:passprint (执行 pass 块)print (当前字母 :, letter)执行以上脚本输出结果为 当前字母 : T 当前字母 : a 当前字母 : r 执行 pass 块 当前字母 : z 当前字母 : a 当前字母 : n