Python-程序的控制结构二

简介: hello,这里是Token_w的博客,欢迎各位的阅读点赞评论今天给大家带来的是Python程序的控制结构,希望对大家有多帮助整理不易,希望得到您的认可与点赞! 感谢!

3、程序的循环结构


3.1 程序的循环结构


  • Python语言的循环结构包括两种:遍历循环和无限循环。
  • 遍历循环使用保留字for依次提取遍历结构各元素进行处理;
  • 无限循环使用保留字while根据判断条件执行程序。



3.2 遍历循环: for


  • 遍历循环可以理解为从遍历结构中逐一提取元素,放在循环变量中,对于每个所提取的元素执行一次语句块。for语句的循环执行次数是根据遍历结构中元素个数确定的。


for <循环变量> in <遍历结构>:
        <语句块>


  • 遍历结构可以是字符串、文件、range()函数或组合数据类型等。
  • 对于字符串,可以逐一遍历字符串的每个字符,基本使用方式如下:


for <循环变量> in <字符串变量>:
        <语句块>
for c in "Python":
        print(c)
'''
P
y
t
h
o
n'''



  • 使用range()函数,可以指定语句块的循环次数,基本使用方式如下:


for <循环变量> in range(<循环次数>):
        <语句块>


for i in range(5):
  print(i)
''' 
0
1
2
3
4'''


  • 遍历循环还有一种扩展模式,使用方法如下:


for <循环变量> in <遍历结构>:
        <语句块1>
else:
        <语句块2>


  • 当for循环正常执行之后,程序会继续执行else语句中内容。else语句只在循环正常执行之后才执行并结束,因此,可以在<语句块2>中放置判断循环执行情况的语句。


for s in "PY":
    print("循环执行中: " + s)
else:
    s = "循环正常结束"
print(s)


>>>
循环执行中: P
循环执行中: Y
循环正常结束

3.3 无限循环: while


Python通过保留字while实现无限循环


while <条件>:
        <语句块>


  • 当程序执行到while语句时,判断条件如果为True,执行循环体语句,语句结束后返回再次判断while语句的条件;当条件为False时,循环终止,执行与while同级别缩进的后续语句。


n = 0
while n < 10:
        print(n)
        n = n + 3
'''
0
3
6
9'''


  • 无限循环也有一种使用保留字else的扩展模式,使用方法如下:


while <条件>:
        <语句块1>
else:
        <语句块2>


  • 在这种扩展模式中,当while循环正常执行之后,程序会继续执行else语句中内容。else语句只在循环正常执行后才执行,因此,可以在语句块2中放置判断循环执行情况的语句。


s, idx = "PY", 0
while idx < len(s):
    print("循环执行中: " + s[idx])
    idx += 1
else:
    s = "循环正常结束"
print(s)


>>>
循环执行中: P
循环执行中: Y
循环正常结束


3.4 循环控制: break和continue

  • 循环结构有两个辅助循环控制的保留字:break和continue。break用来跳出最内层for或while循环,脱离该循环后程序从循环后代码继续执行。


while True:
    s = input("请输入一个名字(按Q退出): ")
    if s == "Q":
        break
    print("输入的名字是:", s)
print("程序退出")


>>>
请输入一个名字(按Q退出): 毛泽东
输入的名字是: 毛泽东
请输入一个名字(按Q退出): 邓小平
输入的名字是: 邓小平
请输入一个名字(按Q退出): Q
程序退出


  • 如果有2层或多层循环,break退出最内层循环。
  • continue用来结束当前当次循环,即跳出循环体中下面尚未执行的语句,但不跳出当前循环。


for s in "PYTHON":
    if s == "Y" or s == "y":
        continue
print(s, end="")


  • continue语句和break语句的区别是:continue语句只结束本次循环,不终止整个循环的执行,而break具备结束循环的能力。
  • .

4、程序的异常处理


4.1 程序的异常处理


  • Python程序一般对输入有一定要求,但当实际输入不满足程序要求时,可能会产生程序的运行错误。



n = eval(input("请输入一个数字: "))
请输入一个整数: python
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    n = eval(input("请输入一个数字: "))
  File "<string>", line 1, in <module>
NameError: name 'python' is not defined


  • 由于使用了eval()函数,如果用户输入不是一个数字则可能报错。这类由于输入与预期不匹配造成的错误有很多种可能,不能逐一列出可能性进行判断。为了保证程序运行的稳定性,这类运行错误应该被程序捕获并合理控制。


  • Python语言使用保留字try和except进行异常处理,基本的语法格式如下:


try:
        <语句块1>
except:
        <语句块2>
  • 语句块1是正常执行的程序内容,当执行这个语句块发生异常时,则执行except保留字后面的语句块2。


try:
    n = eval(input("请输入一个数字: "))
    print("输入数字的3次方值为: ", n**3)
except:
    print("输入错误,请输入一个数字 !")


>>>
请输入一个数字: 1010
输入数字的3次方值为: 1030301000
>>>
请输入一个数字: python
输入错误,请输入一个数字!



  • 除了输入之外,异常处理还可以处理程序执行中的运行异常。


for i in range(5):
    print(10/i, end=" ")
'''
Traceback (most recent call last):
  File "<pyshell#12>", line 2, in <module>
'''
    print(10/i, end=" ")
'''
ZeroDivisionError: division by zero'''


try:
    for i in range(5):
    print(10/i, end=" ")
except:
    print("某种原因,出错了!")


5、实例解析:猜数字游戏


  • 编写一个“猜数字游戏”的程序,在1到1000之间随机产生一个数,然后请用户循环猜测这个数字,对于每个答案只回答“猜大了”或“猜小了”,直到猜测准确为止,输出用户的猜测次数。
  • 为了产生随机数,需要使用Python语言的随机数标准库random


import random
target = random.randint(1,1000)


  • 根据程序需求,需要考虑不断地让用户循环输入猜测值,并根据猜测值和目标值之间的比较决定程序逻辑。


import random
target = random.randint(1,1000)
count = 0
while True:
    guess = eval(input('请输入一个猜测的整数(1至1000):'))
    count = count + 1
    if guess > target:
        print('猜大了')
    elif guess < target:
        print('猜小了')
    else:
        print('猜对了')
        break
print("此轮的猜测次数是:", count)


  • 由于使用了eval(input())方式获得用户输入,如果用户输入非数字产生运行错误,程序将会退出。为了增加程序鲁棒性,增加异常处理机制。


import random
target = random.randint(1,1000)
count = 0
while True:
    try:
        guess = eval(input('请输入一个猜测的整数(1至1000):'))
    except:
        print('输入有误,请重试,不计入猜测次数哦!')
        continue
    count = count + 1
    if guess > target:
        print('猜大了')
    elif guess < target:
        print('猜小了')
    else:
        print('猜对了')
        break
print("此轮的猜测次数是:", count)


该程序执行效果如下


>>>
请输入一个猜测的整数(1至1000):500
猜大了
请输入一个猜测的整数(1至1000):Python
输入有误,请重试,不计入猜测次数哦!
请输入一个猜测的整数(1至1000):260
猜小了
请输入一个猜测的整数(1至1000):380
猜大了
请输入一个猜测的整数(1至1000):300
猜小了
请输入一个猜测的整数(1至1000):340
猜小了
请输入一个猜测的整数(1至1000):360
猜小了
请输入一个猜测的整数(1至1000):370
猜对了
此轮的猜测次数是: 7



小结


讲解了程序的三种控制结构,具体讲解了分支结构的三种类型:单分支结构、二分支结构合多分支结构,以及判断条件的组合。进一步具体讲解了循环结构的两种类型:遍历循环和无限循环,以及循环控制符break和continue。最后,讲解了程序的基本异常处理方法。通过猜数字游戏的实例帮助大家理解程序结构和异常处理的运用。


猜数字就是人生历程,运气重要?方法重要?或许,快乐的经历才最重要。

目录
相关文章
|
4天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
4天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
5天前
|
算法 定位技术 Python
震惊!Python 图结构竟然可以这样玩?DFS&BFS 遍历技巧大公开
在 Python 编程中,图是一种重要的数据结构,而深度优先搜索(DFS)和广度优先搜索(BFS)是遍历图的两种关键算法。本文将通过定义图的数据结构、实现 DFS 和 BFS 算法,并通过具体示例展示其应用,帮助读者深入理解这两种算法。DFS 适用于寻找路径和检查图连通性,而 BFS 适用于寻找最短路径。掌握这些技巧,可以更高效地解决与图相关的复杂问题。
17 2
|
6天前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
11天前
|
Python
SciPy 教程 之 SciPy 图结构 7
《SciPy 教程 之 SciPy 图结构 7》介绍了 SciPy 中处理图结构的方法。图是由节点和边组成的集合,用于表示对象及其之间的关系。scipy.sparse.csgraph 模块提供了多种图处理功能,如 `breadth_first_order()` 方法可按广度优先顺序遍历图。示例代码展示了如何使用该方法从给定的邻接矩阵中获取广度优先遍历的顺序。
22 2
|
12天前
|
算法 Python
SciPy 教程 之 SciPy 图结构 5
SciPy 图结构教程,介绍图的基本概念和SciPy中处理图结构的模块scipy.sparse.csgraph。重点讲解贝尔曼-福特算法,用于求解任意两点间最短路径,支持有向图和负权边。通过示例演示如何使用bellman_ford()方法计算最短路径。
24 3
|
16天前
|
机器学习/深度学习 算法 编译器
Python程序到计算图一键转化,详解清华开源深度学习编译器MagPy
【10月更文挑战第26天】MagPy是一款由清华大学研发的开源深度学习编译器,可将Python程序一键转化为计算图,简化模型构建和优化过程。它支持多种深度学习框架,具备自动化、灵活性、优化性能好和易于扩展等特点,适用于模型构建、迁移、部署及教学研究。尽管MagPy具有诸多优势,但在算子支持、优化策略等方面仍面临挑战。
43 3
|
18天前
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
19 3
|
11天前
|
存储 机器学习/深度学习 搜索推荐
Python编程入门:从零开始构建你的第一个程序
【10月更文挑战第32天】本文旨在通过浅显易懂的方式引导编程新手进入Python的世界。我们将一起探索Python的基础语法,并通过实例学习如何构建一个简单的程序。文章将不直接展示代码,而是鼓励读者在阅读过程中自行尝试编写,以加深理解和记忆。无论你是编程初学者还是希望巩固基础知识的开发者,这篇文章都将是你的良师益友。让我们开始吧!
|
13天前
|
算法 索引 Python
SciPy 教程 之 SciPy 图结构 3
SciPy 图结构教程:介绍图的基本概念、节点和边的定义,以及如何使用 SciPy 的 `scipy.sparse.csgraph` 模块处理图结构。重点讲解 Dijkstra 最短路径算法及其在 SciPy 中的应用,包括 `dijkstra()` 方法的参数设置和使用示例。
11 0