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。最后,讲解了程序的基本异常处理方法。通过猜数字游戏的实例帮助大家理解程序结构和异常处理的运用。


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

目录
相关文章
|
1月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
162 0
|
3月前
|
人工智能 Linux 开发工具
Python从零到一:手把手带你写出第一个实用程序
Python语法简洁易懂,适合编程新手入门。它广泛应用于人工智能、自动化办公、Web开发等领域。学习Python可快速搭建项目,拥有丰富库支持和强大社区资源。通过本教程,你将掌握基础语法、环境搭建、程序逻辑控制及实战项目开发,开启编程之旅。
308 0
|
2月前
|
设计模式 决策智能 Python
Python条件控制:让程序学会"思考"的魔法
本文深入浅出地讲解Python条件控制,从基础if语句到多分支、嵌套结构,再到简洁的三元表达式与Python 3.10新增的match-case模式匹配,结合电商折扣、会员等级、ATM系统等实战案例,全面掌握程序“智能决策”的核心逻辑。
288 0
|
4月前
|
数据采集 存储 NoSQL
Python爬虫案例:Scrapy+XPath解析当当网网页结构
Python爬虫案例:Scrapy+XPath解析当当网网页结构
|
6月前
|
人工智能 并行计算 开发者
CUDA重大更新:原生Python可直接编写高性能GPU程序
NVIDIA在2025年GTC大会上宣布CUDA并行计算平台正式支持原生Python编程,消除了Python开发者进入GPU加速领域的技术壁垒。这一突破通过重新设计CUDA开发模型,引入CUDA Core、cuPyNumeric、NVMath Python等核心组件,实现了Python与GPU加速的深度集成。开发者可直接用Python语法进行高性能并行计算,显著降低门槛,扩展CUDA生态,推动人工智能、科学计算等领域创新。此更新标志着CUDA向更包容的语言生态系统转型,未来还将支持Rust、Julia等语言。
438 3
CUDA重大更新:原生Python可直接编写高性能GPU程序
|
5月前
|
PyTorch 算法框架/工具 C++
人工智能算法python程序运行环境安装步骤整理
本教程详细介绍Python与AI开发环境的配置步骤,涵盖软件下载、VS2017安装、Anaconda配置、PyCharm设置及组件安装等内容,适用于Windows系统,助你快速搭建开发环境。
|
5月前
|
机器学习/深度学习 前端开发 API
python3如何使用QT编写基础的对话框程序
Qt与Python结合形成了PyQt/PySide,为桌面应用开发提供强大支持。通过简单安装PyQt5或PySide6,开发者可快速搭建跨平台GUI应用。本文从创建基础对话框入手,介绍布局管理、信号与槽机制、对话框模式及样式表美化等核心功能,并探讨模态窗口、事件驱动编程和资源打包等内容。最后,引导读者探索模型视图架构、多线程处理等进阶技术,逐步掌握用Python+Qt开发高效桌面应用的技能。
165 0
|
7月前
|
开发框架 Java .NET
Python中main函数:代码结构的基石
在Python中,`main`函数是程序结构化和模块化的重要组成部分。它实现了脚本执行与模块导入的分离,避免全局作用域污染并提升代码复用性。其核心作用包括:标准化程序入口、保障模块复用及支持测试驱动开发(TDD)。根据项目复杂度,`main`函数有基础版、函数封装版、参数解析版和类封装版四种典型写法。 与其他语言相比,Python的`main`机制更灵活,支持同一文件作为脚本运行或模块导入。进阶技巧涵盖多文件项目管理、命令行参数处理、环境变量配置及日志集成等。此外,还需注意常见错误如全局变量污染和循环导入,并通过延迟加载、多进程支持和类型提示优化性能。
574 0
|
8月前
|
Python
[oeasy]python074_ai辅助编程_水果程序_fruits_apple_banana_加法_python之禅
本文回顾了从模块导入变量和函数的方法,并通过一个求和程序实例,讲解了Python中输入处理、类型转换及异常处理的应用。重点分析了“明了胜于晦涩”(Explicit is better than implicit)的Python之禅理念,强调代码应清晰明确。最后总结了加法运算程序的实现过程,并预告后续内容将深入探讨变量类型的隐式与显式问题。附有相关资源链接供进一步学习。
138 4

推荐镜像

更多