热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python无限循环通过while保留字构建_Python学习笔记(四)

第四章程序的控制结构程序的基本结构程序由三种基本结构组成:顺序结构分支结构循环结构这些基本结构都有一个入口和一个出口。任何程序都由这三种基本结构组合而成微实例计算圆的

第四章 程序的控制结构

程序的基本结构

程序由三种基本结构组成:

顺序结构

分支结构

循环结构

这些基本结构都有一个入口和一个出口。任何程序都由这三种基本结构组合而成

微实例

计算圆的面积和周长

计算绝对值

整数累加

#输入半径,计算圆的面积和周长

R = eval(input("请输入圆半径:"))

S = 3.1415*R*R

L = 2*3.1415*R

print("面积和周长:",S,L)

请输入圆半径:3

面积和周长: 28.2735 18.849

#输入一个实数,计算其绝对值

R = eval(input("输入实数:"))

if (R <0):

R &#61; -R

print("绝对值",R)

输入实数:-2.8

绝对值 2.8

#输入正整数&#xff0c;计算从1累加到该数的和

R &#61; eval(input("请输入正整数:"))

i, S &#61; 0, 0

while (i<&#61;R):

S &#61; S &#43; i

i &#61; i &#43; 1

print("累加求和",S)

请输入正整数:100

累加求和 5050

程序的分支结构

单分支结构: if语句

Python中if语句的语法格式如下&#xff1a;

if :

语句块

语句块是if条件满足后执行的一个或多个语句序列

语句块中语句通过与if所在行形成缩进表达包含关系

if语句首先评估的结果值&#xff0c;如果结果为True&#xff0c;则执行语句块里的语句序列&#xff0c;然后控制转向程序的下一条语句。如果结果为False&#xff0c;语句块里的语句会被跳过。

if语句中语句块执行与否依赖于条件判断。但无论什么情况&#xff0c;控制都会转到if语句后与该语句同级别的下一条语句

if语中部分可以使用任何能够产生True或False的语句

形成判断条件最常见的方式是采用关系操作符

微实例4.4&#xff1a;PM 2.5空气质量提醒(1)

输入&#xff1a;接收外部输入PM2.5值

处理&#xff1a;

if PM2.5值 >&#61; 75&#xff0c;打印空气污染警告

if 35 <&#61; PM2.5值 <75&#xff0c;打印空气污染警告

if PM2.5值 <35&#xff0c;打印空气质量优&#xff0c;建议户外运动

输出&#xff1a;打印空气质量提醒

PM &#61; eval(input("请输入PM2.5数值: "))

if 0<&#61; PM <35:

print("空气优质&#xff0c;快去户外运动!")

if 35 <&#61; PM <75:

print("空气良好&#xff0c;适度户外活动&#xff01;")

if 75 <&#61; PM:

print("空气污染&#xff0c;请小心&#xff01;")

请输入PM2.5数值: 50

空气良好&#xff0c;适度户外活动&#xff01;

二分支结构: if-else语句

Python中if-else语句用来形成二分支结构&#xff0c;语法格式如下&#xff1a;

if :

else:

是在if条件满足后执行的一个或多个语句序列

是if条件不满足后执行的语句序列

二分支语句用于区分的两种可能True或者False&#xff0c;分别形成执行路径

微实例4.5&#xff1a;PM 2.5空气质量提醒(2)

PM &#61; eval(input("请输入PM2.5数值: "))

if PM >&#61; 75:

print("空气存在污染&#xff0c;请小心&#xff01;")

else:

print("空气没有污染&#xff0c;可以开展户外运动!")

请输入PM2.5数值: 50

空气没有污染&#xff0c;可以开展户外运动!

二分支结构还有一种更简洁的表达方式&#xff0c;适合通过判断返回特定值&#xff0c;语法格式如下&#xff1a;

if else

PM &#61; eval(input("请输入PM2.5数值: "))

print("空气{}污染!".format("存在" if PM >&#61; 75 else "没有"))

请输入PM2.5数值: 80

空气存在污染!

多分支结构: if-elif-else语句

Python的if-elif-else描述多分支结构&#xff0c;语句格式如下&#xff1a;

if :

elif :

...

else:

多分支结构是二分支结构的扩展&#xff0c;这种形式通常用于设置同一个判断条件的多条执行路径。

Python依次评估寻找第一个结果为True的条件&#xff0c;执行该条件下的语句块&#xff0c;同时结束后跳过整个if-elif-else结构&#xff0c;执行后面的语句。如果没有任何条件成立&#xff0c;else下面的语句块被执行。else子句是可选的。

微实例4.6&#xff1a;PM 2.5空气质量提醒(3)

PM &#61; eval(input("请输入PM2.5数值: "))

if 0<&#61; PM <35:

print("空气优质&#xff0c;快去户外运动!")

elif 35 <&#61; PM <75:

print("空气良好&#xff0c;适度户外活动&#xff01;")

else:

print("空气污染&#xff0c;请小心&#xff01;")

请输入PM2.5数值: 30

空气优质&#xff0c;快去户外运动!

实例&#xff1a;身体质量指数BMI

BMI的定义如下&#xff1a;

BMI &#61; 体重(kg)÷身高2(m2)

例如&#xff0c;一个人身高1.75米、体重75公斤&#xff0c;他的BMI值为24.49

编写一个根据体重和身高计算BMI值的程序&#xff0c;并同时输出国际和国内的BMI指标建议值

height, weight &#61; eval(input("请输入身高(米)和体重\

(公斤)[逗号隔开]: "))

bmi &#61; weight / pow(height, 2)

print("BMI数值为&#xff1a;{:.2f}".format(bmi))

wto, dom &#61; "", ""

if bmi <18.5: # WTO标准

wto &#61; "偏瘦"

elif bmi <25: # 18.5 <&#61; bmi <25

wto &#61; "正常"

elif bmi <30: # 25 <&#61; bmi <30

wto &#61; "偏胖"

else:

wto &#61; "肥胖"

if bmi <18.5: # 我国卫生部标准

dom &#61; "偏瘦"

elif bmi <24: # 18.5 <&#61; bmi <24

dom &#61; "正常"

elif bmi <28: # 24 <&#61; bmi <28

dom &#61; "偏胖"

else:

dom &#61; "肥胖"

print("BMI指标为:国际&#39;{0}&#39;, 国内&#39;{1}&#39;".format(wto, dom))

请输入身高(米)和体重(公斤)[逗号隔开]: 1.75,74

BMI数值为&#xff1a;24.16

BMI指标为:国际&#39;正常&#39;, 国内&#39;偏胖&#39;

height, weight &#61; eval(input("请输入身高(米)和体重\

(公斤)[逗号隔开]: "))

bmi &#61; weight / pow(height, 2)

print("BMI数值为&#xff1a;{:.2f}".format(bmi))

wto, dom &#61; "", ""

if bmi <18.5:

wto, dom &#61; "偏瘦", "偏瘦"

elif 18.5 <&#61; bmi <24:

wto, dom &#61; "正常", "正常"

elif 24 <&#61; bmi <25:

wto, dom &#61; "正常", "偏胖"

elif 25 <&#61; bmi <28:

wto, dom &#61; "偏胖", "偏胖"

elif 28 <&#61; bmi <30:

wto, dom &#61; "偏胖", "肥胖"

else:

wto, dom &#61; "肥胖", "肥胖"

print("BMI指标为:国际&#39;{0}&#39;, 国内&#39;{1}&#39;".format(wto, dom))

请输入身高(米)和体重(公斤)[逗号隔开]: 1.75,73

BMI数值为&#xff1a;23.84

BMI指标为:国际&#39;正常&#39;, 国内&#39;正常&#39;

程序的循环结构

遍历循环: for语句

遍历循环&#xff1a;

根据循环执行次数的确定性&#xff0c;循环可以分为确定次数循环和非确定次数循环。确定次数循环指循环体对循环次数有明确的定义循环次数采用遍历结构中元素个数来体现

Python通过保留字for实现“遍历循环” &#xff1a;

for in :

遍历结构可以是字符串、文件、组合数据类型或range()函数&#xff1a;

遍历循环还有一种扩展模式&#xff0c;使用方法如下&#xff1a;

for in :

else:

当for循环正常执行之后&#xff0c;程序会继续执行else语句中内容。else语句只在循环正常执行之后才执行并结束

for s in "BIT":

print("循环进行中&#xff1a;" &#43; s)

else:

print("循环正常结束")

循环进行中&#xff1a;B

循环进行中&#xff1a;I

循环进行中&#xff1a;T

循环正常结束

无限循环: while语句

无限循环一直保持循环操作直到特定循环条件不被满足才结束&#xff0c;不需要提前知道确定循环次数。

Python通过保留字while实现无限循环&#xff0c;使用方法如下&#xff1a;

while :

语句块

无限循环也有一种使用保留字else的扩展模式&#xff1a;

while :

else:

s, idx &#61; "BIT", 0

while idx

print("循环进行中: " &#43; s[idx])

idx &#43;&#61; 1

else:

print("循环正常结束")

循环进行中: B

循环进行中: I

循环进行中: T

循环正常结束

循环保留字: break和continue

循环结构有两个辅助保留字&#xff1a;break和continue&#xff0c;它们用来辅助控制循环执行

break用来跳出最内层for或while循环&#xff0c;脱离该循环后程序从循环后代码继续执行

continue用来结束当前当次循环&#xff0c;即跳出循环体中下面尚未执行的语句&#xff0c;但不跳出当前循环。

对于while循环&#xff0c;继续求解循环条件。而对于for循环&#xff0c;程序流程接着遍历循环列表

for s in "BIT":

for i in range(10):

print(s, end&#61;"")

if s&#61;&#61;"I":

break

BBBBBBBBBBITTTTTTTTTT

for s in "PYTHON":

if s&#61;&#61;"T":

continue

print(s, end&#61;"")

PYHON

for s in "PYTHON":

if s&#61;&#61;"T":

break

print(s, end&#61;"")

PY

continue语句和break语句的区别是&#xff1a;

continue语句只结束本次循环&#xff0c;而不终止整个循环的执行。

break语句则是结束整个循环过程&#xff0c;不再判断执行循环的条件是否成立

random库的使用

使用random库主要目的是生成随机数&#xff0c;因此&#xff0c;读者只需要查阅该库的随机数生成函数&#xff0c;找到符合使用场景的函数使用即可。这个库提供了不同类型的随机数函数&#xff0c;所有函数都是基于最基本的random.random()函数扩展而来。

对random库的引用方法与math库一样&#xff0c;采用下面两种方式实现&#xff1a;

import random

from random import *

#输出所有的变量结果

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity &#61; "all"

from random import *

random()

uniform(1,10)

uniform(1,20)

randrange(0,100,4) #从0开始到100以4递增的元素中随机返回

choice(range(100))

ls &#61; list(range(10))

print(ls)

shuffle(ls)

print(ls)

0.3009407488048058

7.634623047949269

7.6703007509187024

76

39

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

[8, 4, 2, 3, 7, 6, 5, 1, 0, 9]

生成随机数之前可以通过seed()函数指定随机数种子&#xff0c;随机种子一般是一个整数&#xff0c;只要种子相同&#xff0c;每次生成的随机数序列也相同。这种情况便于测试和同步数据

seed(125) # 随机种子赋值125

"{}.{}.{}".format(randint(1,10),randint(1,10),randint(1,10))

"{}.{}.{}".format(randint(1,10),randint(1,10),randint(1,10))

seed(125) # 再次给随机种子赋值125

"{}.{}.{}".format(randint(1,10),randint(1,10),randint(1,10))

&#39;4.4.10&#39;

&#39;5.10.3&#39;

&#39;4.4.10&#39;

实例&#xff1a;π的计算

π(圆周率)是一个无理数&#xff0c;即无限不循环小数。精确求解圆周率π是几何学、物理学和很多工程学科的关键。

对π的精确求解曾经是数学历史上一直难以解决的问题之一&#xff0c;因为π无法用任何精确公式表示&#xff0c;在电子计算机出现以前&#xff0c;π只能通过一些近似公式的求解得到&#xff0c;直到1948年&#xff0c;人类才以人工计算方式得到π的808位精确小数。

随着计算机的出现&#xff0c;数学家找到了另类求解π的另类方法&#xff1a;蒙特卡罗(Monte Carlo)方法&#xff0c;又称随机抽样或统计试验方法。

应用蒙特卡罗方法求解π的基本步骤如下&#xff1a;

随机向单位正方形和圆结构&#xff0c;抛洒大量“飞镖”点

计算每个点到圆心的距离从而判断该点在圆内或者圆外

用圆内的点数除以总点数就是π/4值。

随机点数量越大&#xff0c;越充分覆盖整个图形&#xff0c;计算得到的π值越精确。实际上&#xff0c;这个方法的思想是利用离散点值表示图形的面积&#xff0c;通过面积比例来求解π值。

from random import random

from math import sqrt

from time import clock

DARTS &#61; 1000000

hits &#61; 0.0

clock()

for i in range(1, DARTS&#43;1):

x, y &#61; random(), random()

dist &#61; sqrt(x ** 2 &#43; y ** 2)

if dist <&#61; 1.0:

hits &#61; hits &#43; 1

pi &#61; 4 * (hits/DARTS)

print("Pi值是{}.".format(pi))

print("运行时间是: {:5.5}s".format(clock()))

68.80672016579628

Pi值是3.143716.

运行时间是: 71.452s

异常处理机制

异常处理: try-except语句

看一个小程序片段&#xff1a;

num &#61; eval(input("请输入一个整数&#xff1a;"))

print(num ** 2)

请输入一个整数&#xff1a;abc

---------------------------------------------------------------------------

NameError Traceback (most recent call last)

in ()

----> 1 num &#61; eval(input("请输入一个整数&#xff1a;"))

2 print(num ** 2)

in ()

NameError: name &#39;abc&#39; is not defined

当用户输入的不是整数&#xff0c;Python解释器返回了异常信息&#xff0c;同时程序退出

Python异常信息中最重要的部分是异常类型&#xff0c;它表明了发生异常的原因&#xff0c;也是程序处理异常的依据。

Python使用try-except语句实现异常处理&#xff0c;基本的语法格式如下&#xff1a;

try:

except :

try:

num &#61; eval(input("请输入一个整数: "))

print(num**2)

except NameError:

print("输入错误&#xff0c;请输入一个整数!")

请输入一个整数: abc

输入错误&#xff0c;请输入一个整数!

异常的高级用法

try-except语句可以支持多个except语句&#xff0c;语法格式如下&#xff1a;

try:

except :

….

except :

except:

最后一个except语句没有指定任何类型&#xff0c;表示它对应的语句块可以处理所有其他异常。这个过程与if-elif-else语句类似&#xff0c;是分支结构的一种表达

try:

alp &#61; "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

idx &#61; eval(input("请输入一个整数: "))

print(alp[idx])

except NameError:

print("输入错误&#xff0c;请输入一个整数!")

except:

print("其他错误")

请输入一个整数: 26

其他错误

该程序将用户输入的数字作为索引从字符串alp中返回一个字符&#xff0c;当用户输入非整数字符时&#xff0c;except NameError异常被捕获到&#xff0c;

提示升用户输入类型错误&#xff0c;当用户输入数字不在0到25之间时&#xff0c;异常被except捕获&#xff0c;程序打印其他错误信息

除了try和except保留字外&#xff0c;异常语句还可以与else和finally保留字配合使用&#xff0c;语法格式如下&#xff1a;

try:

except :

else:

finally:

try:

alp &#61; "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

idx &#61; eval(input("请输入一个整数: "))

print(alp[idx])

except NameError:

print("输入错误&#xff0c;请输入一个整数!")

else:

print("没有发生异常")

finally:

print("程序执行完毕&#xff0c;不知道是否发生了异常")

请输入一个整数: 5

F

没有发生异常

程序执行完毕&#xff0c;不知道是否发生了异常



推荐阅读
  • 本文介绍了使用Python编写购物程序的实现步骤和代码示例。程序启动后,用户需要输入工资,并打印商品列表。用户可以根据商品编号选择购买商品,程序会检测余额是否充足,如果充足则直接扣款,否则提醒用户。用户可以随时退出程序,在退出时打印已购买商品的数量和余额。附带了完整的代码示例。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 小程序wxs中的时间格式化以及格式化时间和date时间互转
    本文介绍了在小程序wxs中进行时间格式化操作的问题,并提供了解决方法。同时还介绍了格式化时间和date时间的互相转换的方法。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
author-avatar
携手相约幸福
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有