Python第3章 流程控制(二)

简介: Python第3章 流程控制

成员运算

运算符in和not in 用于成员检测 如果x 是s 的成员则x ins 值为True,否则为False x not in s 返回x

ins 取反后的值 如果x 不是s 的成员则x not ins 值为True,否则为 False


运算符in和not in 用于成员检测 对于字符串和字节串类型来说 当且仅当x 是y 的子串时,x iny 为True

print('admin' in 'administrator')  # True
print('ada' in 'administrator')    # False
print('' in 'admin')              # False,空格字符串

运算符in和not in 用于成员检测 空字符串总是被视为任何其他字符串的 子串,因此’’ in 'admin’将返回True

print('' in 'admin')    # True,空字符串
print('' in 'admin')   # False,空格字符串

运算符in和not in 用于成员检测 所有内置序列、集合类型、字典都支持成员运算 测试元素x 是否为对象s 的一个成员(元素)

print(10 in range(1, 20))                # True
print('me' in {'you', 'me', 'he'})       # True
print('she' in {'you', 'me', 'he'})       # False
print(2 in [1, 2, 3, 4, 5])                # True
print(6 in [1, 2, 3, 4, 5])                # False
print([1, 2] in [[1, 1], [1, 2], [1, 3]])  # True

运算符in和not in 用于成员检测 所有内置序列、集合类型、字典都支持成员运算 测试元素x 是否为对象s 的一个成员(元素)

print([1, 2] in [1, 2, 3, 4, 5]) # False
[1, 2]  1,2,3,4,5
print(range(5) in range(10))  # False
range(5) 0,1,2,3,4,5,6,7,8,9

运算符in和not in 用于成员检测 对于字典来说成员运算检测对象是否在字典的键中存在

print('me' in {'you': 100, 'me': 1000, 'he': 50})  
print(100 in {'you': 100, 'me': 1000, 'he': 50})  

for循环

for 循环 遍历循环 依据可遍历对象中的子项,按顺序进行迭代 重复次数确定时使用

for 循环变量in 可遍历对象:
重复执行的语句块
[else]:
循环正常结束后需执行的语句

for i  in range(n):  Range
    语句块
for c  in string:   字符串
    语句块
for item in list:  列表(元组、集合、字典)
    语句块
for line  in file:  文件对象
    语句块

while循环

依据判断条件表达式的结果决定是否执行循环

重复次数不确定时使用


while判断条件:

重复执行的语句块 [else]:

循环正常结束后需执行的语句


continue break 应用于while或for循环语句中 置于条件判定语句块中 当满足某条件时触发该语句的执行 continue

应用于while或for循环语句中 跳过本次循环中剩余语句的执行 提前进入下一次循环

for i in range(40):
   if i % 3 == 0 or i % 10 == 3 or i // 10 == 3:
    continue               # 跳过本次循环else语句
else:
    print(i, end=' ')

2.2.png

break

应用于while或for循环语句中

跳过当前循环中未执行的次数,提前结束当前层次循环

break应用:输出最大因子

num = int(input())               # 输入一个整数,例如:100
for i in range(num -1, 0, -1):  # 遍历小于num且大于1的整数
   if num % i == 0:             # 若i为num的因数
        print(i)                 # 输入100时,输出50
        break                     # 中止循环

2.3.png

break只能提前结束当前循环

当循环层数多于一层时,可以用一个标记变量

根据标记变量的值决定是否继续退出外层循环


break应用:百钱百鸡

公鸡5元一只,母鸡3元一只,小鸡3只一元。

用户输入想买的鸡的数量和付出的钱数,

计算公鸡、母鸡和小鸡的数量。

如果有解,输出公鸡最少,小鸡最多的一组;

如果无解则输出“无解”

def hundred_chickens(num, money):
   for cock in range(1, num):  # 从小到大遍历公鸡数量
     for hen in range(1, num):               # 从小到大遍历母鸡数量
        chicken = num -cock -hen                   # 小鸡数量计算得到
        if chicken % 3 == 0 and chicken > 0 and 5 * cock + 3 * hen + chicken // 3 == money:
            return cock,hen,chicken              # 输出找到的第一组解
        else:                              # 两层循环都正常结束时,表明未找到解
         return '无解'
if __name__ == "__main__":
  number,amount_of_money = map(int, (input().split()))          # 切分空格分隔的输入转整型
  print(*hundred_chickens(number, amount_of_money))

2.4.png

项目实训1

兔子繁殖问题

描述

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,用户输入一个月份数,计算并在一行内输出该月的兔子总对数。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬


输入

一个不小于2的正整数‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬


输出

输出该月的兔子的对数


运行代码:

n = int(input('请输入一个月份数:'))
a, b = 1, 1
for i in range(n):
    print(a, end=' ')
    a, b = b, a+b

运行结果:2.5.png

项目实训2

输出九九乘法表:

描述

输出乘法表,如下所示:


1*1= 1


21= 2 22= 4


31= 3 32= 6 3*3= 9


41= 4 42= 8 43=12 44=16


51= 5 52=10 53=15 54=20 5*5=25


61= 6 62=12 63=18 64=24 65=30 66=36


71= 7 72=14 73=21 74=28 75=35 76=42 7*7=49


81= 8 82=16 83=24 84=32 85=40 86=48 87=56 88=64


91= 9 92=18 93=27 94=36 95=45 96=54 97=63 98=72 9*9=81


运行代码:

for i in range(1, 10):
    for j in range(1, i + 1):           # 每行输出10次
        print('{}*{}={}'.format(i, j, i*j), end=' ')
    print()  # 内层循环结束时换到下一行

运行结果:2.6.png

项目实训3

百钱买百鸡

描述

我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,如果要求鸡翁、鸡母、鸡雏都不为零,问鸡翁、鸡母、鸡雏各几何?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬


输入格式

该题目没有输入‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬


输出格式

每行输出一组结果,按鸡翁数、鸡母数、鸡雏数的顺序输出,数字之间用空格分隔;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬


如果有多组解时,按鸡翁数量由少到多输出;


运行代码:

for cock in range(1,100):
    for hen in range(1,100):
        for chicken in range(3,100,3):
            if cock+hen+chicken==100 and 5*cock + 3*hen + chicken//3==100:
                print(cock,hen,chicken)

运行结果:

3.png

项目实训4:

计算圆周率——无穷级数法

描述

π是个超越数,圆周率的超越性否定了化圆为方这种尺规作图精确求解问题的可能性。有趣的是,π可以用无穷级数表示:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬



‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬左边的展式是一个无穷级数,被称为莱布尼茨级数(Leibniz),这个级数收敛到π/4,它通常也被称为格雷戈里-莱布尼茨级数,用以纪念莱布尼茨同时代的天文学家兼数学家詹姆斯·格雷戈里。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬


编程用这个公式计算π值,输入一个小数作为阈值,当最后一项的绝对值小于给定阈值时停止计算并输出得到的π值。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬


输入格式:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬


一个正浮点数threshold,限定级数法求解pi值时,迭代累加只加绝对值大于threshold的项。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬


输出格式:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬


输出为一个浮点数,是程序使用级数法求解的pi值。

运行代码

pi = 0
sign = 1
i=1
while 1/i>= 1e-7:
    pi=pi+sign*1/i
    i=i+2
    sign=-sign
print(pi*4)

运行结果:

4.png

项目实训5:

百分制成绩转换五分制F

描述

编写一个学生成绩转换程序,用户输入百分制的学生成绩,成绩大于等于 90 且小于等于 100 的输出为“A”,成绩大于或等于 80 且小于 90 的输出为“B”,成绩大于或等于 70 且小于 80 的输出为“C”,成绩大于或等于 60 且小于 70 的输出为“D”,成绩小于 60 且大于等于 0 的输出为“E”,如果输出的成绩大于 100 或小于 0 或输入中包含非数字字符,输出’data error!'。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬


输入格式

输入一个浮点数,代表百分制成绩。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬


输出格式

A、B、C、D、E中的一个字母,表示五分制的成绩等级;或输出’data error!’

运行代码:

gra = float(input('请输入成绩:'))
if 90 <= gra <= 100:
    print('A')
if 80 <= gra < 90:
    print('B')
if 70 <= gra < 80:
    print('C')
if 60 <= gra < 70:
    print('D')
if 0 <= gra < 60:
    print('E')
if gra > 100 or gra < 0:
    print('data error!')

运行结果:

5.1.png5.2.png

项目实训6:

与3有关的数

‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

描述

一个正整数,如果它能被3整除,或者它的十进制表示法中某一位的数字为3,则称其为与3相关的数,否则就是与3无关的数。

查找并输出40以内与3有关数。

输入格式

‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪

输出格式

所有与3有关的数


运行代码:

# 查找并输出40以内与3有关数。
for i in range(1, 40):
    if i % 3 == 0 or i % 10 == 3 or i // 10 == 3:
        print(i, end=" ")
# 输入一个数,输出不大于这个数所有与3有关的数
num = int(input('请输入一个整数:'))
for i in range(num + 1):
    if i % 3 == 0 or i % 10 == 3 or i // 10 == 3:
        print(i, end=" ")

运行结果:

6.1.png6.2.png

项目实训7:

最大因数‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

描述

输入一个大于1的整数,输出其自身以外的最大因数

输入格式

输入一个大于1的整数

‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪

输出格式

最大因数


运行代码:

num = int(input('请输入一个大于1的整数:'))
ls = []
for i in range(1, num):
    if num % i == 0:
        ls.append(i)
print(ls[-1])

运行结果:

7.png

相关文章
|
2月前
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
255 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
2月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
3月前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
3月前
|
机器学习/深度学习 文字识别 Java
Python实现PDF图片OCR识别:从原理到实战的全流程解析
本文详解2025年Python实现扫描PDF文本提取的四大OCR方案(Tesseract、EasyOCR、PaddleOCR、OCRmyPDF),涵盖环境配置、图像预处理、核心识别与性能优化,结合财务票据、古籍数字化等实战场景,助力高效构建自动化文档处理系统。
805 0
JSON 监控 API
101 0
|
4月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
844 1
|
4月前
|
设计模式 算法 大数据
Python流程控制:让代码按你的节奏跳舞
Python流程控制是编程核心,通过if条件判断、for循环与while循环,控制代码执行顺序与逻辑分支。它帮助开发者实现智能决策、重复任务处理与交互式应用,是编写高效、清晰程序的关键。掌握这三大控制结构,将显著提升代码逻辑与程序性能。
153 0
|
5月前
|
数据采集 数据可视化 搜索推荐
Python数据分析全流程指南:从数据采集到可视化呈现的实战解析
在数字化转型中,数据分析成为企业决策核心,而Python凭借其强大生态和简洁语法成为首选工具。本文通过实战案例详解数据分析全流程,涵盖数据采集、清洗、探索、建模、可视化及自动化部署,帮助读者掌握从数据到业务价值的完整技能链。
621 0
|
7月前
|
JSON 算法 API
1688商品详情API实战:Python调用全流程与数据解析技巧
本文介绍了1688电商平台的商品详情API接口,助力电商从业者高效获取商品信息。接口可返回商品基础属性、价格体系、库存状态、图片描述及商家详情等多维度数据,支持全球化语言设置。通过Python示例代码展示了如何调用该接口,帮助用户快速上手,适用于选品分析、市场研究等场景。
|
8月前
|
数据采集 机器学习/深度学习 数据挖掘
Python爬虫生成CSV文件的完整流程
Python爬虫生成CSV文件的完整流程

推荐镜像

更多