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月前
|
测试技术 Python
Python接口自动化测试框架(基础篇)-- 流程控制之循环语句for&while
本文介绍了Python中的循环语句,包括while和for循环的使用,range()函数的运用,以及continue、break和pass关键字的说明,同时提出了关于while循环是否能与成员运算符结合使用的思考。
44 1
Python接口自动化测试框架(基础篇)-- 流程控制之循环语句for&while
|
2月前
|
测试技术 索引 Python
Python接口自动化测试框架(练习篇)-- 数据类型及控制流程(一)
本文提供了Python接口自动化测试中的编程练习,包括计算器、猜数字、猜拳和九九乘法表等经典问题,涵盖了数据类型、运算、循环、条件控制等基础知识的综合应用。
38 1
|
2天前
|
人工智能 IDE 测试技术
使用通义灵码提升Python开发效率:从熟悉代码到实现需求的全流程体验
作为一名Python开发者,我最近开始使用通义灵码作为开发辅助工具。它显著提高了我的工作效率,特别是在理解和修改复杂代码逻辑方面。通过AI编码助手,我能够在短时间内快速上手新项目,实现新需求,并进行代码优化,整体效率提升了60%以上。通义灵码不仅加快了代码生成速度,还增强了代码的健壮性和稳定性。
|
13天前
|
SQL 关系型数据库 数据库
优化Web开发流程:Python ORM的优势与实现细节
【10月更文挑战第4天】在Web开发中,数据库操作至关重要,但直接编写SQL语句既繁琐又易错。对象关系映射(ORM)技术应运而生,让开发者以面向对象的方式操作数据库,显著提升了开发效率和代码可维护性。本文探讨Python ORM的优势及其实现细节,并通过Django ORM的示例展示其应用。ORM提供高级抽象层,简化数据库操作,提高代码可读性,并支持多种数据库后端,防止SQL注入。Django内置强大的ORM系统,通过定义模型、生成数据库表、插入和查询数据等步骤,展示了如何利用ORM简化复杂的数据库操作。
41 6
|
2月前
|
测试技术 Python
Python接口自动化测试框架(基础篇)-- 流程控制之if条件控制
Python中的流程控制语句if条件控制,涵盖了比较运算符、成员运算符、身份运算符、逻辑运算符的使用,if语句的嵌套,以及如何使用input和print函数进行交互式编程练习。
24 1
Python接口自动化测试框架(基础篇)-- 流程控制之if条件控制
|
1月前
|
SQL 关系型数据库 MySQL
Python操作pymysql数据库的流程与技巧
在现代软件开发中,Python作为一门高效且易于学习的编程语言,广泛应用于各种场景,其中包括数据库操作。**PyMySQL** 是一个流行的Python数据库接口,用于连接和操作MySQL数据库。它提供了一种简便的方法来执行SQL语句、处理数据和管理数据库事务。以下是使用PyMySQL操作MySQL数据库的流程与技巧,旨在为开发者提供一个清晰、实用的指南。
31 0
|
2月前
|
存储 测试技术 数据格式
Python接口自动化测试框架(练习篇)-- 数据类型及控制流程(二)
本文通过数据类型转换和文件读取的练习,复习了Python中的数据类型、循环、条件判断、内置函数等基础知识,并演示了如何将字符串数据转换为字典列表,以及如何从文本文件中读取和转换数据。
34 1
|
2月前
|
机器学习/深度学习 Ubuntu 数据挖掘
Ubuntu系统部署Anaconda环境及Python语言的详细流程
以上就是在Ubuntu系统中安装Anaconda环境及Python语言的详细流程。Anaconda为Python科学计算提供了便捷的管理方式,帮助用户轻松处理不同项目之间依赖管理的复杂性。通过以上步骤,你现在应该有了一个完全可用的Anaconda环境,可以开始在Ubuntu上进行Python编程和数据科学项目的探索了。
52 5
|
2月前
|
Python
python学习笔记---流程控制
这篇文章详细介绍了Python中的流程控制,包括选择结构(if、if-else语句、嵌套if语句)和循环语句(while循环、for循环以及for循环与range()函数的使用),以及如何在循环中使用break和continue语句。
python学习笔记---流程控制
|
2月前
|
JSON 数据库 开发者
FastAPI入门指南:Python开发者必看——从零基础到精通,掌握FastAPI的全栈式Web开发流程,解锁高效编码的秘密!
【8月更文挑战第31天】在当今的Web开发领域,FastAPI迅速成为开发者的热门选择。本指南带领Python开发者快速入门FastAPI,涵盖环境搭建、基础代码、路径参数、请求体处理、数据库操作及异常处理等内容,帮助你轻松掌握这一高效Web框架。通过实践操作,你将学会构建高性能的Web应用,并为后续复杂项目打下坚实基础。
77 0