python选择结构

article/2025/4/22 9:14:34

1.选择结构

1.1单分支结构

1.1.1 语法:

if  表达式:语句块

1.1.2. 流程图

 

1.1.3 例:输入2个数,输出最大值:

a=int(input())
b=int(input())
max=a
if a<b:max=b
print(max)

1.1.4.注意:

  • 表达式:一般表达式,常量,关系表达式,逻辑表达式

  • 优先级:!(非)>算术>关系>and 和or>赋值运算符

  • 规则:逻辑表达式只检测是否为非0或非空字符串或非None就会执行分支

  • 注意:分支语句的缩进

1.2.1.语法:

if 表达式:语句块1
else:语句块2

1.2.2.流程图

 

1.2.3.例:输入一个整数判断奇偶数

num=input("请输入一个整数:")
if num%2==1:print('奇数')
else:print('偶数')
num=int(input("请输入一个整数:"))
if num & 1 == 1:print('奇数')
else:print('偶数')

1.2.4.例:判断一个整数能否被7或11整除但不能同时整除

num=int(input("请输入一个整数:"))
if (num%7 ==0 or num%11==0) and num%77!=0:print('yes')   #and优先级高于or
else:print('no')

1.2.5.例:判断闰年:能被4整除但不能被100整除,或者能被400整除。

year=int(input('请输入四位数年份'))
if year%4==0 and year%100!=0 or year%400==0:print('闰年')
else:print('平年')

1.3.多分支结构

1.3.1.语法1:

if 表达式1:语句块1
else:if 表达式2:语句块2else:......
#逻辑嵌套推荐不超过7层

1.3.2.语法2:

if 表达式1:语句块1
elif 表达式2:语句块2
elif 表达式3:语句块3
.....
else:语句块n

1.3.3.流程图:

 

1.3.4.例:输入三个整数,降序输出:

a=int(input())
b=int(input())
c=int(input())
if a>b:if a>c:if b>c:print(a,b,c)else:print(a,c,b)else:print(c,a,b)
else:if a>c:print(b,a,c)elif b>c:print(b,c,a)else:print(c,b,a)

1.3.5例:输入一个百分制成绩,输出成绩

x>90 优秀

90>x>=80 良好

80>x>=60 及格

x<60 补考

x=int(input('请输入一个百分之成绩(0-100):'))
if x>100 or x<0:print('数据有误,请输入0-100范围的数字')
elif x>=90:print('优秀')
elif x>=80:print('良好')
elif x>=60:print('及格')
else :print('补考')

1.3.6.注意:

  • if else elif 之后的冒号不能省略

  • elif 与 else 不能单独使用

  • 通过缩进判断是否是同一语句块

2.循环结构

2.1.while循环

while   条件表达式:循环体语句

2.1.2.流程图

 

2.2.for循环

2.2.1.格式:

for  迭代变量  in 对象:循环体
​
#数值循环:
for 迭代变量 in range(start,and,step):循环体

2.2.2.range()函数:

  • python3中内置函数,用于生成一系列连续的整数

  • start:计数起始值,若省略则为0

  • end:计算终止值,不包含(开区间),如range(9)表示产生0-8的整数,end参数不可省略

  • step:步长,默认为1

  • 注意:range()函数只有一个参数,改参数表示end,二个参数时为start和end,三个参数时最后一个为step

  • 例:计算1+2+3+4+......100之和

#while循环
sum=0
i=1
while i <=100:sum=sum+ii+=1
print(sum)
#for循环
sum=0
for i in range(1,101):sum+=i
print(sum)

2.2.3.注意

  • 循环表达式值为非0时执行循环体

  • 循环区间尽量使用开区间

  • 循环嵌套时钟长循环应在内部,短循环在外,以减少内外循环跨越次数,提高效率

for i in range(10)for j in range(3):......
​
for j in range(3):for i in range(10):......
  • 循环嵌套应限制在3层以内,以提高理解性

3.程序示例

3.1.累加和

3.1.1.框架:

sum=0
for i in range(终止值):sum=sum+新项

3.1.2.例1:计算下列多项式的值:

 

sum=0
for i in range(1,101):sum=sum+1/i
print('sum=%.6f'%sum)

3.1.3.例2:计算下列多项式的值

 

sum=1
f=-1
for i in range(2,101):sum=sum+1/i*ff=-f
print('sum=%.6f'%sum)

3.1.4.例3:计算下列多项式的值:

 

sum=1
t=1
for i in range(2,101):t=t+isum=sum+1/t
print(sum)

3.1.5.例4:计算下列多项式的值:

 

a=3
b=2
sum=0
for i in range(20):sum=sum+a/bt=aa=a+bb=t
print(sum)

3.1.6.例5:计算π的近似值,公式:

 

pi=1
f=-1
i=3
while 1/i>1e-6:pi=pi+1/i*ff=-fi=i+2
print('pi=%.6f'%(pi*4))#注意:多项式的迭代时某一运算结果大于1e-6时说明其值需要累加,误差较大需要运算,小于等于1e-6时则结束循环迭代,表示当前数值较小,误差可控可以结束循环
 

3.1.7.例6:利用泰勒级数计算e的近似值

e=1+1/1! +1/2! +1/3! + .........+1/n!

sum=1
t=1
i=1
while 1 / t > 1e-6:t = t*isum = sum+1/ti += 1
print(sum)

3.1.8.例7:计算a+aa+aaa+aaaa+aaa....aaa的值,其中计算前6项之和,a=2

sum=0
a=2
for i in range(6):sum=sum+aa=a*10+2
print(sum)

4.1.素数判断

4.1.1.break语句(结束循环):终止当前循环,执行循环外的下一条语句,一般与if搭配使用,如:

例:计算r=1到r=10时圆的面积直到面积大于100为止

import math
for r in range(1,11):area=math.pi*r*rif area>100:break
print('r:',r,'area is :%.6f'%area)

4.1.2.continue语句(加速循环):跳出当前次循环,继续执行下一次循环,一般与if语句搭配使用,若执行到continue语句,该语句之下的所有循环体语句都不执行直接跳到步长迭代出,如:

例:将100到150之间的不能被3整除的数输出,要求一行输出10个数

i=0
for n in range(100,151):if n%3==0:continueprint(n,end=" ")i+=1if i%10==0:print()

4.1.3. for-else结构:for循环执行完或者未进入循环(即for循环不是通过break语句跳出而中断的)情况下执行else,例:

for i in range(1,100):if i%2==0 and i%3==0 and i%5==0:print('%d 是2,3,5的最小公倍数' % i)break
else:print('未找到!')

执行过程:当for循环正常执行完毕则会执行else之后的语句,若执行break异常跳出则不会执行else后语句,

for i in range(1,100):if i%2==0 and i%3==0 and i%5==0:print('%d 是2,3,5的最小公倍数' % i)#break
else:print('未找到!')

若删除上列中的break会出现问题,所有公倍数都会被打印出来,有满足循环正常结束则else之后的未找到也会被打印

4.2.4.素数:只能被1和自己本身整除的数称为素数,例:输入一个整数,判断是否为素数:

prime=7 7%2 7%3 7%4 7%5 7%6 素数

prime=8 8%2 8%3 ...... 8%7 平数

prime=9 9%2 9%3

  • 判断范围:[2,n-1]

  • 判断方法:整除%

#方法1
prime=int(input('请输入一个正整数:'))
if prime<2:     #保证输入数据大于2print('请输入大于2的正整数!')
else:for i in range(2,prime):if prime%i==0:print('平数')breakelse:    #循环顺利结束后执行print('素数')

prime=7

prime%2 !=0

prime%3 !=0

prime%5!=0

prime%6!=0

prime%7!=0

prime=8

prime%2!=0

#方法:2
prime=int(input('请输入一个正整数:'))
i=2
if prime<2:print('请输入大于2的整数!')
else:while prime%i:i=i+1if i==prime:print('素数')else:print('平数')
方法3筛选法:
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
素数i的倍数一定不是素数,如序列1-20中去掉2的倍数,3的倍数....剩余一定是素数

4.2.穷举法

4.2.1作用:在指定范围内寻找符号条件数

4.2.2.框架:

for i in range(起始,终止,步长):if 条件表达式:处理

4.2.3. 例1:输出100以内的素数

for i in range(2,100):  #遍历2到99for j in range(2,i):  #判断i是否为素数if i%j==0:breakelse:print(i,end=' ') #输出素数

4.2.4. 例2:输出200到400间的非素数

for i in range(200,400):for j in range(2,i):if i%j==0:print(i)break

4.2.5.例3:输出大于m且紧随m的k个素数,如:m=5 k=3 结果为:7 11 13

#变量初始值
m=int(input('请输入起始值:'))
k=int(input('请输入需要的素数个数:'))
i=m+1
t=0     #计数器,记录找到的素数个数
while  t<k:    #当自己找到的素数小于指定个数k的时候继续寻找for j in range(2,i):    #判断i是否为素数if i%j==0:breakelse:t=t+1      #记录找到的素数个数print(i,end=' ')    #输出素数i=i+1           #继续下一个数的寻找

4.2.6.例4:输出100以内的能被9整除余数为2的数,计算其平均值的平方根并输出

aver=0   
t=0     #计算器
for i in range(1,101):if i%9==2:    #计算对9取余余数为2print(i,end=' ')aver=aver+i     #计算和值t=t+1       #记录个数
print('\n aver=%.2f'%((aver/t)**0.5))

4.2.7.例5:输出水仙花数,每位数的立方和等于原值,如:153==1^3+5^3+3^3

水仙花数:153 370 371 407

for i in range(100,1000):if(i%10)**3+(i//10%10)**3+(i//100)**3==i:print('水仙数:',i)

4.2.8.例6:输出1000以内的完数,完数:因子之和等于原值,如:6==1+2+3

i in range(6,1000):   #遍历0到999,最小完数为6sum=0     #每判断一个i必须先清零其因子之和for j in range(1,i):    #寻找i的因子if i%j==0:sum=sum+j     #计算因子之和sumif sum==i:      #判断因子之和是否等于原数print(i,end=' ')

4.2.9. 例7:输出100以内的同构树,同构树:若一个正整数出现在它的平方数的右侧则为同构数,如:5==25 6==36 25==625

for i in range(100):#100以内的同构数平方后可能为2位数或者3位数if i==i * i % 10 or i == i * i % 100:print(i,end=' ')

4.3.1.例8:输出200以内的回文数字

(整数倒置算法)

for i in range(100):t=0    #倒置后数m=iwhile m>0:  #对i进行整数倒置t=t * 10+ i % 10m=m//10if t==i:print(i,end=' ')


http://chatgpt.dhexx.cn/article/9NHg5WXE.shtml

相关文章

C语言的选择结构

选择结构 C语言有两种选择语句:(1)if语句:用来实现两个分支的选择结构 (2)switch语句:用来实现多分支条件的选择结构 例子:计算ax^2 + bx + c = 0的方程的根。 流程图: 代码: #include<stdio.h>#include<math.h>//计算ax^2 + bx + c = 0的方程的根。…

二、选择结构

目录 1.JavaScript的组成 1.三大核心 2.window对象的常用方法 2.if选择结构 3.多重if选择结构 4.嵌套if选择结构 5.switch选择结构 6.三元表达式 1.JavaScript的组成 1.三大核心 ESMAScript 核心语法&#xff08;标准规范&#xff09;-> ES6BOM 浏览器对象模式&am…

选择结构的使用

一、掌握if结构语句 二、掌握switch分支结构 三、两种结构语句的比较 学习结构之前首先要明白为什么要学习结构&#xff0c;结构有什么作用&#xff0c;有哪些结构&#xff0c; 首先我们要明白java代码中&#xff0c;程序运行的原理是从上到下一行一行运行的&#xff0c;如果…

C语言-选择结构

目录 选择结构 一、if-else语句 1.单选择 2.双选择 3.多选择 二.switch语句 选择结构 选择结构用于判断给定的条件&#xff0c;根据判断的结果判断某些条件&#xff0c;根据判断的结果来控制程序的流程 一、if-else语句 1.单选择 单选择通过if语句就可以实现&#xff0c…

Insert keyframe giving keying set failed to insert any key frames问题(已解决)

Blender 2.81 beta 问题描述 骨骼动画&#xff0c;进入姿态模式以后&#xff0c;调整了姿势然后按I键尝试插入关键帧&#xff0c;但是报错&#xff0c;报错信息很费解 “插入关键帧的帧位置” 于是切换到英文版显示 “Insert keyframe giving keying set failed to insert any…

论文阅读笔记:(2015, ijrr) Keyframe-based visual–inertial odometry using nonlinear optimization

算是基于滑窗的VIO的必读文章吧&#xff0c;很详细地说了边缘化~ paper: http://in.ruc.edu.cn/wp-content/uploads/2021/01/Keyframe-Based-Visual-Inertial-Odometry-Using-Nonlinear-Optimization.pdfhttp://in.ruc.edu.cn/wp-content/uploads/2021/01/Keyframe-Based-Vis…

ORB-SLAM2源码笔记(4)——帧Frame和关键帧KeyFrame

Frame类中的相机参数为static类型&#xff0c;表示所有Frame对象共享一份相机参数 特征点提取ExtractORB 在Frame类构造函数中调用成员变量mpORBextractorLeft和mpORBextractorRight的()运算符进行特征点提取. 畸变矫正前的左目特征点是mvKeys[i]. 畸变矫正后的左目特征点是m…

《UnityAPI.Keyframe关键帧》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Keyframe+inTangent+outTangent+立钻哥哥++OK++)

《UnityAPI.Keyframe关键帧》 版本 作者 参与者 完成日期 备注 UnityAPI_Keyframe_V01_1.0 严立钻 2020.06.28 #《UnityAPI.Keyframe关键帧》发布说明&#xff1a; “UnityAPI.Keyframe关键帧”是对UnityAPI中Keyframe关键帧类的剖析和拓展&…

ORB-SLAM2算法10之图像关键帧KeyFrame

文章目录 0 引言1 KeyFrame类1.1 构造函数1.2 成员函数1.3 关键帧之间共视图1.3.1 AddConnection1.3.2 UpdateBestCovisibles1.3.3 UpdateConnections1.3.4 EraseConnection1.3.5 SetBadFlag 1.4 地图点1.5 生成树 2 KeyFrame用途 0 引言 ORB-SLAM2算法7详细了解了System主类和…

CSS3 @keyframe动画的基本用法与常见错误用法

前言 随着CSS3的推出与普及&#xff0c;其各种属性开始被广泛使用。尤其是其动画功能&#xff0c;对于一些简单的动画实现&#xff0c;实在没必要用Javascript去实现&#xff0c;这是keyframes动画就派上了用场。今天来讲一下keyframes的一些基本的用法和常见坑。 【本文志于…

【微信小程序】动画入门keyframe

【微信小程序—动画工坊】动画入门 前情 需要了解的前置知识&#xff1a; 子代选择器基本布局 分析 可以将任务进行一下拆分。 如何让小球跑动起来&#xff1f; 通过keyframe创造动画函数&#xff0c;然后再通过animation绑定创造动画函数 keyframe的百分比代表动画的进度…

ORB-SLAM2 --- KeyFrame::UpdateConnections 函数

目录 一、函数作用 二、函数流程 三、code 四、函数解析 一、函数作用 更新关键帧之间的连接图。 更新变量 mConnectedKeyFrameWeights&#xff1a;当前关键帧的共视信息&#xff0c;记录当前关键帧共视关键帧的信息&#xff08;哪一帧和当前关键帧有共视&#xff0c;共视…

三谈属性动画——Keyframe以及ViewPropertyAnimator

Android动画和Transition系列文章 初识属性动画——使用Animator创建动画再谈属性动画——介绍以及自定义Interpolator插值器三谈属性动画——Keyframe以及ViewPropertyAnimator让View具有减速效果的动画——FlingAnimation让View具有弹性效果的动画——SpringAnimation让View…

ORB-SLAM2 --- KeyFrame::SetBadFlag函数

目录 1.函数作用 2.code 3.函数解析 1.函数作用 真正地执行删除关键帧的操作。 需要删除的是该关键帧和其他所有帧、地图点之间的连接关系。 2.code void KeyFrame::SetBadFlag() { // Step 1 首先处理一下删除不了的特殊情况{unique_lock<mutex> lock(mMutexConn…

【视觉SLAM】Fast Relocalisation and Loop Closing in Keyframe-Based SLAM

See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/263621033 Article in Proceedings - IEEE International Conference on Robotics and Automation June 2014 DOI: 10.1109/ICRA.2014.6906953 先读Abstrac…

Android属性动画 Keyframe

转载请标明出处&#xff1a;http://blog.csdn.net/zhaoyanjun6/article/details/118963313 本文出自【赵彦军的博客】 文章目录 KeyFrame实战 KeyFrame KeyFrame 主要用于自定义控制动画速率&#xff0c;KeyFrame 直译过来就是关键帧。 而关键帧这个概念是从动画里学来的&…

ORB-SLAM2代码详解05: 关键帧KeyFrame

pdf版本笔记的下载地址: ORB-SLAM2代码详解05_关键帧KeyFrame,排版更美观一点,这个网站的默认排版太丑了&#xff08;访问密码&#xff1a;3834&#xff09; ORB-SLAM2代码详解05: 关键帧KeyFrame 各成员函数/变量共视图: mConnectedKeyFrameWeights基于对地图点的观测重新构造…

@keyframes详解

一、transform 和keyframes动画的区别&#xff1a; keyframes动画是循环的&#xff0c;而transform 只执行一遍. 二、keyframes CSS3中添加的新属性animation是用来为元素实现动画效果的&#xff0c;但是animation无法单独担当起实现动画的效果。承载动画的另一个属性——keyfr…

KeyFrame类

关键帧类主要是进行Covisbility Graph&#xff0c; Essential&#xff0c;Spanning Tree 三个图的维护&#xff0c;更新。 其中不涉及关键帧的筛选策略问题&#xff0c;只设置了剔除某关键帧和剔除关键帧后如何更新图的方法。总体来说&#xff0c;不难理解。 PS:本文设计多线程…

自定义控件三部曲之动画篇(八)——PropertyValuesHolder与Keyframe

前言&#xff1a;只有比牛人跑的更快&#xff0c;才有可能追上他的脚步。 相关文章&#xff1a; 《Android自定义控件三部曲文章索引》:http://blog.csdn.net/harvic880925/article/details/50995268 前几篇给大家讲了ValueAnimator、ObjectAnimator的知识&#xff0c;讲解了…