当前位置: 首页 > article >正文

Python 循环全解析:从语法到实战的进阶之路

一、问答题

(1)下面的循环体被重复了多少次?每次循环的输出结果是什么?

i=1
while i < 10:if i % 2 == 0:print(i)

死循环,没有输出结果

i=1
while i < 10:if i % 2 == 0:print(i)i += l

死循环,没有输出结果

i = 1
while i< 10:if i % 2 == 0:print(i)i+= 1

第1、3、5、7、9次没有输出

第2、4、6、8次分别输出2、4、6、8

(2)指出下面代码的错误:

count = 0
while count < 100:print(count)

没有循环更新变量,造成死循环

count = 0
while count < 100:print(count)count -= 1

虽然有了循环更新变量,但是离终止条件越来越远,仍然是死循环

count = 0
while count < 100:
count += 1

count += 1 在while循环控制语句之外 仍然是死循环

(3)假设输入值为“2 3 4 5 0"(每行一个数)。下面代码的输出结果是什么?

number = eval(input("Enter an integer:"))
max = number
while number!=0:number = eval(input("Enter an integer:"))if number > max:max= number
print("max is",max)
print("number",number)

max is 5

number 0

(4)假设输入是"2 3 4 5 0"(每行一个数)。那么下面代码的输出是什么?

number = 0
sum = 0
for count in range(5):number = eval(input("Enter an integer:"))sum += number
print("sum is",sum)
print("count is",count)

sum is 14

count is 4

(5)什么是循环四要素,并举例说明。

循环的开始:循环从哪里开始,起点一般我们使用变量来标记的

循环的继续条件:反过来说就是结束条件,用于判断循环是否继续执行的;(循环全部执行完毕,中途结束)

循环体:需要被重复执行的内容

循环的控制变量:用于控制循环的进度

条件满足
条件不满足
控制变量初始化
继续条件 判断控制变量
循环体
结束
更新控制变量

向前走10步

  • 从第1步开始,计数 循环的开始
  • 没到10步继续 循环的继续条件
  • 向前走的1步 循环体
  • 步数计数+1 循环控制变量

向前走直到碰墙为止

  • 距离
  • 距离 > 0
  • 向前走1步 距离递减
  • 距离的数值

(6)将下面的for循环语句转换成while 循环。

sum = 0
for i in range(1001):sum = sum + i

sum = 0

i = 0

while i <= 1000:

sum += i

i += 1

(7)你能将任意while循环转换成for循环吗?将下面这个while循环转换成for 循环。

i = 1	
sum = 0
while sum < 10000:sum = sum + ii += 1

sum = 0

for i in range(0, 10001):

​ sum += i

(8)统计下面循环中的迭代次数:

count =0
while count <n:count += 1

n次

for count in range(n):print(count)

n次

count = 5
while count < n:count += 1

n - 5 次

count = 5
while count < n:count = count + 3

n / 3 - 5次

(9)显示下面这个程序的输出(提示:绘制一个表格,列出所有的变量来跟踪这个程序)。

for i in range(1,5):j=0while j  < i:print(j,end="")j += 1
循环次数1234
i1234
j0000
j < iT FT T FT T T FT T T T F
print00 10 1 20 1 2 3
j += 111 21 2 31 2 3 4

输出:

0010120123

i= 0
while i < 5:for j in range(i,1,-1):print(j,end ="")print("☆☆☆☆")i += 1
循环次数12345
i01234
i < 5TTTTT
jnonenone23 24 3 2
print不执行不执行23 24 3 2
print☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
i += 112345

输出:

☆☆☆☆

☆☆☆☆

2☆☆☆☆

32☆☆☆☆

432☆☆☆☆

i = 5
while i >= 1:num = 1for j in range(1,i + 1):print(num,end="xxx")num *= 2print()i -= 1
循环次数12345
i54321
i >= 1TTTTT
num11111
j1 2 3 4 51 2 3 41 2 31 21
print1 2 4 8 161 2 4 81 2 41 21
num *= 22 4 8 16 322 4 8 162 4 82 42
i -= 143210

输出:

1xxx2xxx4xxx8xxx16xxx

1xxx2xxx4xxx8xxx

1xxx2xxx4xxx

1xxx2xxx

1xxx

i= 1
while i <= 5:num =1for j in range(1,i + 1):print(num,end="G")num +=2print()i += 1
循环次数12345
i12345
i <= 5TTTTT
num = 111111
j11 21 2 31 2 3 41 2 3 4 5
print11 31 3 51 3 5 71 3 5 7 9
num += 233 53 5 73 5 7 93 5 7 9 11
i += 123456

输出:

1G

1G3G

1G3G5G

1G3G5G7G

1G3G5G7G9G

(10)如果你知道一个数n1的公约数不可能大于n1/2,你就可以试图使用下面的循环来改善你的程序:

k= 2
while k <= n1 / 2 and k <= n2 / 2:if n1 % k == 0 and n2 % k == 0:gcd = kk += 1

这个程序是错误的。你能找出原因吗?

这个程序找到的是最小的非1公约数,无法把公约数找全

(11)关键字 break的作用是什么?关键字continue的作用是什么?下面这个程序会终止吗?如果会,请给出程序运行的结果。

break: 是一个控制流语句,其作用是终止当前所在的循环结构(for 循环或者 while 循环),进而直接跳出该循环,不再执行循环里剩余的语句,而是接着执行循环之后的代码。

continue:是 Python 等编程语言里的一个控制流语句,主要用于循环结构(for 循环和 while 循环)中。它的作用是跳过当前循环中剩余的语句,直接进入下一次循环的迭代。

balance = 1000
while True:if balance < 9:breakbalance = balance - 9
print("Balance is",balance)

这个程序会终止

输出:Balance is 1

balance = 1000
while True:if balance < 9:continuebalance = balance - 9
print("Balance is",balance)

不会终止

balance的值会一直停留在10

(12)上边的for循环被转换成下边的while循环。哪里出了错误? 请改正。

for i in range(4):if i % 3 == 0:continuesum += i
    i= 0while i < 4:if i% 3 == 0:continuesum += ii += 1

while语句中 i = 0 就满足了if条件,所以执行coutinue,但是更新变量在一直没有被执行,因此就是死循环

(13)在下面a的循环里如果break语句执行完后,哪些语句就被终止?显示输出结果。在下面b的循环里如果continue语句执行完后,哪些语句就被终止?显示输出结果。

#a
for i in range(1,4):for j in range(1,4):if i * j > 2:breakprint(i * j)print(i)

1 * 3

2 * 2

3 * 1

4 * 1

这四条语句被终止

输出:

1

1

2

1

2

2

#b
for i in range(1,4):for j in range(1,4):if i * j > 2:coutinueprint(i * j)print(i)

1 * 3

2 * 2 2 * 3

3 * 1 3 * 2 3 * 3

4 * 1 4 * 2 4 * 3

这几条语句被终止

1

1

2

1

2

2

二、编程题

(14)打印数字 III【录屏讲解】

**视频链接:**录制: 录制2
录制文件:https://meeting.tencent.com/crm/2Vaj74vQ25

题目描述

利用循环,寻找规律,打印如下数字模式:

                        11	2	11	2	4	2	11 	2	4	8	4	2	11	2	4	8	16	8	4	2	11	2	4	8	16	32	16	8	4	2	1
1	2	4	8	16	32	64	32	16	8	4	2	1
for i in range(1,8):#空格for k in range(7 - i):print(" ", end = "  ")#打印1-7列for j in range(0, i):print(f'{2 ** j:<3d}', end = "")#打印8-13列for j in range(i - 2, -1, -1):print(f'{2 ** j:<3d}', end = "")print()

(15)打印菱形 III【录屏讲解】

**视频链接:**录制: 录制3
录制文件:https://meeting.tencent.com/crm/ld1xDRDYd9

题目描述

如下所示,是一个高度为9的菱形

    ****************
*************************

用户输入菱形高度n,并打印出该高度下的菱形

输入输出描述

输入高度n,n为奇数

输出该高度的菱形

示例

输入:

5

输出:

 *
***
*****
****
n = int(input())
for i in range(1, n // 2 + 2):for k in range(n // 2 + 1- i):print(" ",end = "")for j in range(0, 2 * i - 1):print("*",end = "")print()
for i in range(n // 2 + 2, n + 1):for k in range(i - n // 2 - 1):print(" ",end = "")for j in range((n - i) * 2 + 1, 0, -1):print("*", end = "")print()

(16) 最小公倍数

题目描述

输入两个正整数,计算其最小公倍数,例如4和2的最小公倍数是4,3和5的最小公倍数是15

输入输出描述

输入两个正整数

输出最小公倍数

示例1

输入:

3 9

输出:

9

示例2

输入:

4 6

输出:

12

x, y = map(int, input().split(" "))
MAX = max(x, y)
MIN = min(x, y)
#最小公倍数一定大于大的那个数
i = MAX
#不确定终止条件用while True
while True:if i % MAX == 0 and i % MIN == 0:print(i)breaki += 1

(17)完全数

题目描述

如果一个正整数等于除了它本身之外所有正因子的和,那么这个数称为完全数

例如 6 = 3 + 2 + 1,28 = 14 + 7 + 4 + 2 + 1

输入输出描述

输入一个正整数

输出该数是否为完全数

示例1

输入:

6

输出:

Yes

示例2

输入:

9

输出:

No

#完全数
num = int(input())
#用于判断累加后的结果是否等于num
the_sum = 0
#求出所有因子的和
for i in range(1, num):if num % i == 0:the_sum += i
#判断是否是完全数
if the_sum == num:print("Yes")
else:print("No")

(18)计算π

题目描述

你可以使用下面的数列近似计算π
π = 4 ( 1 − 1 3 + 1 5 − 1 7 + 1 9 − 1 11 + . . . + ( − 1 ) i + 1 2 i − 1 ) π=4(1-\frac{1}{3}+\frac{1}{5}-\frac{1}{7}+\frac{1}{9}-\frac{1}{11}+...+\frac{(-1)^{i+1}}{2i-1}) π=4(131+5171+91111+...+2i1(1)i+1)
当i越大时,计算结果越近似于π

#计算Π
#输入i的值
i = int(input())
#分子为1
fenzi = 1the_sum = 0
for j  in range(1, i + 1):#分母fenmu = 2 * j - 1#求出每次循环i对应的值num = fenzi / fenmu#累加结果the_sum += num#更新分子fenzi = fenzi * -1
#计算出来的Π
pi = 4 * the_sum
print(pi)

(19)计算e

题目描述

你可以使用下面的数列近似计算e
e = 1 + 1 1 ! + 1 2 ! + 1 3 ! + 1 4 ! + . . . + 1 i ! e=1+\frac{1}{1!}+\frac{1}{2!}+\frac{1}{3!}+\frac{1}{4!}+...+\frac{1}{i!} e=1+1!1+2!1+3!1+4!1+...+i!1
当i越大时,计算结果越近似于e

#计算e
i = int(input())
#分子
fenzi = 1
#累加
the_sum = 0
for j in range(1, i + 1):#计算分母fenmu = 1for k in range(1, j + 1):fenmu *= knum = fenzi / fenmuthe_sum += num
#最终e的值
e = 1 + the_sum
print(e)

(20)组合问题 I

题目描述

在数字范围[1,7]之间,任意选择两个不相同的数作为一个组合,输出每一组组合,并统计所有组合的个数

注:组合(a,b)与组合(b,a)算同一种组合,只记录一次

"""
11 12 13 14 15 16 17
22 23 24 25 26 27 
33 34 35 36 37
44 45 46 47
55 56 57
66 67
77
"""
#组合问题1
for i in range(1, 8):for j in range(i, 8):print(f'{i,j}', end = " ")print()

(21)组合问题 II【录屏讲解】

**视频链接:**录制: 录制4
录制文件:https://meeting.tencent.com/crm/N1AvGeYMd8

题目描述

有1、2、3、4这个四个数字,能组成多少个互不相同且无重复数字的三位数?分别又是多少?

"""
123 124 132 134 142 143 
213 214 231 234 241 243 
312 314 321 324 341 342
412 413 421 423 431 432
24
"""
#组合问题2
#计数
count = 0
#控制百位数字
for i in range(1, 5):#控制十位数字for j in range(1,5):#控制个位数字for k in range(1, 5):#一旦出现相等数字就跳出本次循环执行下一次if i == j or i == k or j == k:continuecount += 1baiwei = i * 100shiwei = j * 10print(baiwei + shiwei + k, end = " ")print()
print(count)

相关文章:

Python 循环全解析:从语法到实战的进阶之路

一、问答题 &#xff08;1&#xff09;下面的循环体被重复了多少次?每次循环的输出结果是什么? i1 while i < 10:if i % 2 0:print(i)死循环&#xff0c;没有输出结果 i1 while i < 10:if i % 2 0:print(i)i l死循环&#xff0c;没有输出结果 i 1 while i< 10…...

The Rust Programming Language 学习 (七)

常见集合 使用 Vector 存储表 Vec<T>&#xff0c;也被称为 vector。vector 允许我们在一个单独的数据结构中储存多于一个的值&#xff0c;它在内存中彼此相邻地排列所有的值。vector 只能储存相同类型的值。它们在拥有一系列项的场景下非常实用 新建Vector 为了创建一…...

[GXYCTF2019]禁止套娃1 [GitHack] [无参数RCE]

Git基础 Git信息泄露原理解析及利用总结 - FreeBuf网络安全行业门户 CTF中的GIT泄露_ctf git泄露-CSDN博客 Git结构 dirsearch扫出来一大堆东西&#xff08;然而这些并没有什么屁用&#xff09; 但也算起码了解了git结构了吧 /.git/HEAD&#xff1a;表示当前HEAD指针的指…...

从ChatGPT到AutoGPT——AI Agent的范式迁移

一、AI Agent的范式迁移 1. ChatGPT的局限性与Agent化需求 单轮对话的“工具属性” vs. 多轮复杂任务的“自主性” ChatGPT 作为强大的生成式AI,虽然能够进行连贯对话,但本质上仍然是“工具型”AI,依赖用户提供明确的指令,而无法自主规划和执行任务。 人类介入成本过高:提…...

stock-pandas,一个易用的talib的替代开源库。

原创内容第841篇&#xff0c;专注智能量化投资、个人成长与财富自由。 介绍一个ta-lib的平替——我们来实现一下&#xff0c;最高价突破布林带上轨&#xff0c;和最低价突破布林带下轨的可视化效果&#xff1a; cross_up_upper stock[high].copy()# cross_up_upper 最高价突破…...

Spring Cloud Gateway详细介绍简单案例

文章目录 1、Spring Cloud Gateway 详细介绍1.1. 统一入口&#xff08;Single Entry Point&#xff09;1.2. 请求路由&#xff08;Request Routing&#xff09;1.3. 负载均衡&#xff08;Load Balancing&#xff09;1.4. 流量控制&#xff08;Rate Limiting&#xff09;1.5. 身…...

鸿蒙原生开发之状态管理V2

一、ArkTS状态变量的定义&#xff1a; State&#xff1a;状态&#xff0c;指驱动UI更新的数据。用户通过触发组件的事件方法&#xff0c;改变状态数据。状态数据的改变&#xff0c;引起UI的重新渲染。 在鸿蒙原生开发中&#xff0c;使用ArkTS开发UI的时候&#xff0c;我们可以…...

矩阵中对角线的遍历问题【C++】

1&#xff0c;按对角线进行矩阵排序 题目链接&#xff1a;3446. 按对角线进行矩阵排序 - 力扣&#xff08;LeetCode&#xff09; 【题目描述】 对于一个m*n的矩阵grid&#xff0c;要求对该矩阵进行 变换&#xff0c;使得变换后的矩阵满足&#xff1a; 主对角线右上的所有对角…...

Python小练习系列 Vol.4:迷宫寻路(回溯 + DFS)

&#x1f9e0; Python小练习系列 Vol.4&#xff1a;迷宫寻路&#xff08;回溯 DFS&#xff09; &#x1f6aa; 本期我们将探索一个二维世界&#xff0c;借助回溯算法帮助角色走出迷宫&#xff01;这是学习路径搜索类题目的经典案例。 &#x1f9e9; 一、题目描述 给定一个二维…...

[Lc4_dfs] 解数独 | 单词搜索

目录 1.解数独 题解 2.单词搜索 题解 1.解数独 链接&#xff1a;37. 解数独 编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线…...

day17 学习笔记

文章目录 前言一、数组的增删改查1.resize函数2.append函数3.insert函数4.delete函数5.argwhere函数6.unique函数 二、统计函数1.amax&#xff0c;amin函数2.ptp函数3.median函数4.mean函数5.average函数6.var&#xff0c;std函数 前言 通过今天的学习&#xff0c;我掌握了num…...

自动语音识别(ASR)技术详解

语音识别&#xff08;Automatic Speech Recognition, ASR&#xff09;是人工智能和自然语言处理领域的重要技术&#xff0c;旨在将人类的语音信号转换为对应的文本。近年来&#xff0c;深度学习的突破推动语音识别系统从实验室走入日常生活&#xff0c;为智能助手、实时翻译、医…...

git | 版本切换的相关指令

常见指令 git log --oneline #查看历史提交 git tag latest-backup # 对当前的提交进行标记&#xff0c;标记名为latest-backup git checkout -b old-version 55b16aa # 切换到[55b16aa]的提交中&#xff0c;并标记为[old-version]的分支 git checkout master …...

19.OpenCV图像二值化

OpenCV图像二值化 图像二值化&#xff08;Binarization&#xff09;是图像预处理中的一种常用技术&#xff0c;其目的是将图像中的像素值分为两个类别——通常是“前景”和“背景”或者说0和255。二值化能够简化图像信息&#xff0c;为后续的形态学处理、边缘检测、目标识别等…...

通过Appium理解MCP架构

MCP即Model Context Protocol&#xff08;模型上下文协议&#xff09;&#xff0c;是由Anthropic公司于2024年11月26日推出的开放标准框架&#xff0c;旨在为大型语言模型与外部数据源、工具及系统建立标准化交互协议&#xff0c;以打破AI与数据之间的连接壁垒。 MCP架构与Appi…...

分享一个Pyside6实现web数据展示界面的效果图

今天又是有问题直接找DS的一天&#xff0c;每日一问&#xff0c;今天我的问题是“怎么将pyside6生成的界面转成web界面&#xff0c;使用python语言实现web界面”&#xff0c;等了一会&#xff0c;DS给我提供了两种方案&#xff0c;方案如下&#xff1a; 然后&#xff0c;让我们…...

FALL靶场通关攻略

1&#xff0c;下载好靶机后打开&#xff0c;通过kali扫描靶机ip和端口&#xff0c;得到靶机ip为192.168.50.144 2&#xff0c;扫描目录 3&#xff0c;访问靶机 4&#xff0c;访问扫描到的test.php,得到缺少GET请求参数的提示 5&#xff0c;使用FUZZ来扫出参数为file 6&#xff…...

Mybatis日志模块分析--适配器模式+代理模式

适配器模式 日志在我们开发过程中占据了一个非常重要的地位&#xff0c;是开发和运维管理之间的桥梁&#xff0c;在Java中的日志框架也非常多&#xff0c;Log4j,Log4j2,Apache Commons Log,java.util.logging,slf4j等&#xff0c;这些工具对外的接口也都不尽相同&#xff0c;为…...

HTTP介绍以及(GET/POST/PUT/DELETE)应用介绍

WWW 是 “World Wide Web” 的缩写&#xff0c;中文名为 “万维网”。它是一个基于超文本和 HTTP 协议的全球性信息系统&#xff0c;通过互联网连接了世界各地的服务器和用户。用户可以使用浏览器访问各种网站&#xff0c;浏览网页、获取信息、进行交互等。 WWW 的核心技术包…...

圆球法线图,图生法线图 图片生成法线图

目录 圆球法线图 根据图片生成法线图 深度图计算法线图 圆球法线图 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D# 定义球体的参数 radius 1.0 resolution 100# 生成球体表面的点 u np.linspace(0, 2 * np.pi, resoluti…...

notepad++ 正则表达式

注意&#xff1a;Notepad正则表达式字符串最长不能超过69个字符 \ 转义字符 如&#xff1a;要使用 “\” 本身, 则应该使用“\\” \t Tab制表符 注&#xff1a;扩展和正则表达式都支持 \r 回车符CR 注&#xff1a;扩展支持&#xff0c;正则表达式不支持 \n 换行符…...

Java基于SpringBoot的网络云端日记本系统,附源码+文档说明

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…...

【自用记录】本地关联GitHub以及遇到的问题

最近终于又想起GitHub&#xff0c;想上传代码和项目到仓库里。 由于很早之前有在本地连接过GitHub&#xff08;但没怎么用&#xff09;&#xff0c;现在需要重新搞起&#xff08;操作忘得差不多&#xff09;。 在看教程实操的过程中遇到了一些小问题&#xff0c;遂记录一下。 前…...

页码设置相关问题记录

Q&#xff1a;中间没有显示页码怎么办&#xff1f; A&#xff1a;“页眉和页脚”-“页码”-“页面底端”-“普通数字2” Q&#xff1a;想让页码在某几节连续怎么办&#xff1f; A&#xff1a; ① 先保证节与节之间插入了“分节符”&#xff08;如何插入分节符和如何显示分节符…...

什么是数据集市

数据集市&#xff08;Data Mart&#xff09;是数据管理领域的核心概念&#xff0c;其定义为面向特定业务领域或用户群体的小型数据仓库子集&#xff0c;专注于部门级业务分析&#xff0c;具有快速响应、灵活部署等特点。以下从定义、特点、类型、结构、应用场景及与其他数据架构…...

Python 的未来:在多元变革中持续领跑

一、从工具到生态&#xff1a;Python 的核心优势筑牢发展根基 Python 自诞生以来&#xff0c;始终以 “简洁易用” 和 “跨界融合” 为标签&#xff0c;在技术快速迭代的时代展现出惊人的韧性。其核心竞争力不仅在于语法的直观性 —— 让开发者专注于逻辑实现而非语法细节&…...

【HC-05蓝牙模块】主要性能指标与通信基础知识

一、HC-05 基础学习视频 HC-05蓝牙串口通信模块调试与应用1 二、HC-05学习视频课件...

深度学习中的数据类型

1. NumPy 数组 (numpy.ndarray) 核心定位&#xff1a;科学计算的基础工具&#xff0c;处理数值多维数组。 特点&#xff1a; 高效数值运算&#xff1a;底层用 C 实现&#xff0c;适合数学计算&#xff08;如矩阵乘法、傅里叶变换&#xff09;。 内存连续存储&#xff1a;数据…...

如何缩短研发周期,降低研发成本?全星APQP软件为您提供解决方案

如何缩短研发周期&#xff0c;降低研发成本&#xff1f;全星APQP软件为您提供解决方案 一、 系统概述 全星研发管理APQP软件系统是一款专为产品研发和质量管控打造的智能化平台&#xff0c;旨在帮助企业高效推进APQP&#xff08;先期产品质量策划&#xff09;流程&#xff0c…...

嵌入式系统安全架构白皮书

嵌入式系统安全架构白皮书 一、安全威胁模型 1.1 典型攻击面分析 #mermaid-svg-mxWZ8IOtOmMv6YLV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-mxWZ8IOtOmMv6YLV .error-icon{fill:#552222;}#mermaid-svg-mxWZ8I…...