Python学习中使用循环(for, while)

在Python编程语言中,循环是一个非常重要的概念,可以帮助我们在代码中重复执行某些操作。Python支持两种主要的循环结构:for 循环和 while 循环。

1. for 循环

for 循环用于遍历一个序列(如列表、元组、字符串)或其他可迭代对象(如字典、集合)。它的基本语法如下:

for variable in iterable:# 执行代码块

其中,variable 是一个变量,它将在每次迭代中被赋予 iterable 中的下一个值,iterable 是一个可迭代对象。以下是一些示例:

示例 1:遍历列表

fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:print(fruit)

输出:

apple
banana
cherry

示例 2:遍历字符串

for char in 'hello':print(char)

输出:

h
e
l
l
o

示例 3:使用 range() 函数

range() 函数用于生成一个数值序列。它通常与 for 循环一起使用。基本语法如下:

for i in range(start, stop, step):# 执行代码块
  • start:序列的起始值,默认为0。
  • stop:序列的结束值(不包含在序列中)。
  • step:步长,默认为1。

示例:

for i in range(5):print(i)

输出:

0
1
2
3
4

示例 4:遍历字典

student = {'name': 'John', 'age': 25, 'courses': ['Math', 'CompSci']}
for key, value in student.items():print(f'{key}: {value}')

输出:

name: John
age: 25
courses: ['Math', 'CompSci']

示例 5:嵌套 for 循环

matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
]for row in matrix:for item in row:print(item, end=' ')print()

输出:

1 2 3 
4 5 6 
7 8 9 

2. while 循环

while 循环在给定的条件为真时,重复执行目标语句。它的基本语法如下:

while condition:# 执行代码块

其中,condition 是一个表达式,当其为真时,执行代码块。下面是一些示例:

示例 1:简单 while 循环

i = 0
while i < 5:print(i)i += 1

输出:

0
1
2
3
4

示例 2:用户输入

user_input = ''
while user_input.lower() != 'exit':user_input = input('Enter something (type "exit" to quit): ')print(f'You entered: {user_input}')

示例 3:无限循环和 break

while True:user_input = input('Enter something (type "exit" to quit): ')if user_input.lower() == 'exit':breakprint(f'You entered: {user_input}')

示例 4:continue 语句

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

输出:

1
3
5
7
9

3. for 循环和 while 循环的区别

  • 使用场景for 循环通常用于遍历固定长度的序列,而 while 循环适用于未知长度的循环或需要在满足特定条件时终止的循环。
  • 可读性for 循环通常更简洁,更易读,尤其是在处理序列时。while 循环在处理复杂条件时更灵活。
  • 性能:在许多情况下,for 循环的性能可能稍好,因为它们在许多情况下可以更有效地进行优化。

4. 循环中的常见问题

无限循环

无限循环是指循环条件永远为真的循环。通常是由于条件未正确更新导致的。示例:

i = 0
while i < 5:print(i)# 缺少 i += 1,导致 i 永远为 0

breakcontinue

  • break:立即终止循环。
  • continue:跳过当前迭代,继续下一次迭代。

示例:

for i in range(10):if i == 5:breakprint(i)for i in range(10):if i % 2 == 0:continueprint(i)

嵌套循环中的 break

在嵌套循环中使用 break 只会终止内层循环。示例:

for i in range(3):for j in range(3):if j == 1:breakprint(f'i={i}, j={j}')

输出:

i=0, j=0
i=1, j=0
i=2, j=0

循环与条件语句结合

for i in range(1, 11):if i % 2 == 0:print(f'{i} 是偶数')else:print(f'{i} 是奇数')

输出:

1 是奇数
2 是偶数
3 是奇数
4 是偶数
5 是奇数
6 是偶数
7 是奇数
8 是偶数
9 是奇数
10 是偶数

5. 实践案例

案例 1:计算列表中所有元素的和

numbers = [1, 2, 3, 4, 5]
total = 0
for num in numbers:total += num
print(f'列表元素的和为: {total}')

案例 2:找出列表中的最大值

numbers = [3, 41, 12, 9, 74, 15]
max_num = numbers[0]
for num in numbers:if num > max_num:max_num = num
print(f'列表中的最大值是: {max_num}')

案例 3:使用 while 循环实现猜数字游戏

import randomsecret_number = random.randint(1, 100)
guess = None
attempts = 0while guess != secret_number:guess = int(input('猜一个 1 到 100 之间的数字: '))attempts += 1if guess < secret_number:print('猜低了')elif guess > secret_number:print('猜高了')else:print(f'恭喜你,猜对了!你一共猜了 {attempts} 次。')

案例 4:生成乘法表

for i in range(1, 10):for j in range(1, 10):print(f'{i} x {j} = {i * j}', end='\t')print()

输出:

1 x 1 = 1	1 x 2 = 2	1 x 3 = 3	1 x 4 = 4	1 x 5 = 5	1 x 6 = 6	1 x 7 = 7	1 x 8 = 8	1 x 9 = 9	
2 x 1 = 2	2 x 2 = 4	2 x 3 = 6	2 x 4 = 8	2 x 5 = 10	2 x 6 = 12	2 x 7 = 14	2 x 8 = 16	2 x 9 = 18	
3 x 1 = 3	3 x 2 = 6	3 x 3 = 9	3 x 4 = 12	3 x 5 = 15	3 x 6 = 18	3 x 7 = 21	3 x 8 = 24	3 x 9 = 27	
4 x 1 = 4	4 x 2 = 8	4 x 3 = 12	4 x 4 = 16	4 x 5 = 20	4 x 6 = 24	4 x 7 = 28	4 x 8 = 32	4 x 9 = 36	
5 x 1 = 5	5 x 2 = 10	5 x 3 = 15	5 x 4 = 20	5 x 5 = 25	5 x 6 = 30	5 x 7 = 35	5 x 8 = 40	5 x 9 = 45	
6 x 1 = 6	6 x 2 = 12	6 x 3 = 18	6 x 4 = 24	6 x 5 = 30	6 x 6 = 36	6 x 7 = 42	6 x 8 = 48	6 x 9 = 54	
7 x 1 = 7	7 x 2 = 14	7 x 3 = 21	7 x 4 = 28	7 x 5 = 35	7 x 6 = 42	7 x 7 = 49	7 x 8 = 56	7 x 9 = 63	
8 x 1 = 8	8 x 2 = 16	8 x 3 = 24	8 x 4 = 32	8 x 5 = 40	8 x 6 = 48	8 x 7 = 56	8 x 8 = 64	8 x 9 = 72	
9 x 1 = 9	9 x 2 = 18	9 x 3 = 27	9 x 4 = 36	9 x 5 = 45	9 x 6 = 54	9 x 7 = 63	9 x 8 = 72	9 x 9 = 81	

案例 5:统计字符串中每个字符的出现频率

text = 'hello world'
char_count = {}for char in text:if char in char_count:char_count[char] += 1else:char_count[char] = 1for char, count in char_count.items():print(f'{char}: {count}')

输出:

h: 1
e: 1
l: 3
o: 2: 1
w: 1
r: 1
d: 1

循环结构是Python编程中的基本概念,for 循环和 while 循环各有其适用场景和优势。for 循环适用于遍历已知长度的序列,而 while 循环则在处理需要满足特定条件时特别有用。理解并掌握这两种循环的用法,可以大大提高代码的可读性和效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/371843.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java反射与Fastjson的危险反序列化

什么是Java反射&#xff1f; 在前文中&#xff0c;我们有一行代码 Computer macBookPro JSON.parseObject(preReceive,Computer.class); 这行代码是什么意思呢&#xff1f;看起来好像就是我们声明了一个名为 macBookPro 的 Computer 类&#xff0c;它由 fastjson 的 parseObje…

浅谈OpenCV的多对象匹配透明图像的实现,以及如何匹配半透明控件

引子 OpenCV提供的templateMatch只负责将&#xff08;相关性等&#xff09;计算出来&#xff0c;并不会直接提供目标的对应坐标&#xff0c;一般来说我们直接遍历最高的相关度&#xff0c;就可以得到匹配度最高的坐标。但是这样一般只能得到一个坐标。在实际操作中&#xff0c;…

Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL

章节内容 上一节我们完成了&#xff1a; Reduce JOIN 的介绍Reduce JOIN 的具体实现DriverMapperReducer运行测试 背景介绍 这里是三台公网云服务器&#xff0c;每台 2C4G&#xff0c;搭建一个Hadoop的学习环境&#xff0c;供我学习。 之前已经在 VM 虚拟机上搭建过一次&am…

Atom CMS v2.0 SQL 注入漏洞(CVE-2022-25488)

前言 CVE-2022-25488 是一个发现于 Telesquare SDT-CW3B1 设备中的命令注入漏洞。这一漏洞可以被未经认证的远程攻击者利用&#xff0c;通过特殊构造的 HTTP 请求在设备上执行任意命令。以下是关于该漏洞的详细信息&#xff1a; 漏洞详细信息 漏洞编号: CVE-2022-25488影响范…

记录一次ffmpeg手动编译出现的问题

前言部分 使用环境: ubuntu 22.04 最近手动编译了一次的ffmpeg&#xff08;参考博客ffmpeg学习&#xff1a;ubuntu下编译ffmpeg(全网最懒的编译脚本)&#xff09;&#xff0c;但是过程出现了一些问题&#xff0c;因此在此记录一下&#xff0c;若有疑问&#xff0c;欢迎讨论~。 …

【MotionCap】pycharm 远程在wsl2 ubuntu20.04中root的miniconda3环境

pycharm wsl2 链接到pycharmsbin 都能看到内容,/root 下内容赋予了zhangbin 所有,pycharm还是看不到/root 下内容。sudo 安装了miniconda3 引发了这些问题 由于是在 root 用户安装的miniconda3 所以安装路径在/root/miniconda3 里 这导致了环境也是root用户的,会触发告警 WA…

【MySQL】MySQL锁冲突排障纪要

【MySQL】MySQL锁冲突排障纪要 开篇词&#xff1a;干货篇&#xff1a;1.查看当前innodb status,里面包含事务,锁占用情况2.查看mysql进程状态3.查看innodb事务&#xff0c;锁&#xff0c;锁等待情况4.定位持有锁的线程信息 总结篇&#xff1a;一、锁冲突的原因二、锁冲突的表现…

BigDecimal(double)和BigDecimal(String)有什么区别?BigDecimal如何精确计数?

BigDecimal(double)和BigDecimal(String)的区别 double是不精确的&#xff0c;所以使用一个不精确的数字来创建BigDecimal&#xff0c;得到的数字也是不精确的。如0.1这个数字&#xff0c;double只能表示他的近似值。所以&#xff0c;当我们使用new BigDecimal(0.1)创建一个Bi…

一.2.(4)放大电路静态工作点的稳定;

1.Rb对Q点及Au的影响 输入特性曲线&#xff1a;Rb减少&#xff0c;IBQ&#xff0c;UBEQ增大 输出特性曲线&#xff1a;ICQ增大&#xff0c;UCEQ减少 AUUO/Ui分子减少&#xff0c;分母增大&#xff0c;但由于分子带负号&#xff0c;所以|Au|减少 2.Rc对Q点及Au的影响 输入特性曲…

Google账号输入用户名和密码后提醒要到手机通知点是,还要点击数字,但是我手机收不到

有一些朋友换了一个新的电脑后手机登录谷歌账号时&#xff0c;用户名和密码都正确输入以后&#xff0c;第三步弹出一个提示&#xff0c;要在手机上的通知栏点击是&#xff0c;并且点击手机上相应的数字才能继续登录。 但是自己的手机上下拉通知栏却没有来自谷歌的通知&#xf…

Qt(MSVC)下报“语法错误缺少“}““语法错误缺少“常数“ 的解决办法

1.现象 目前我在工程中试图使用QHttpServer时&#xff0c;一编译&#xff0c;就报了一堆奇奇怪怪的错误&#xff1a; D:\Qt\httpServer\Qt5.15.2\include\QtHttpServer\qhttpserverrequest.h:75: error: C2143: 语法错误: 缺少“}”(在“(”的前面) D:\Qt\httpServer\Qt5.15.…

0/1背包问题总结

文章目录 &#x1f347;什么是0/1背包问题&#xff1f;&#x1f348;例题&#x1f349;1.分割等和子集&#x1f349;2.目标和&#x1f349;3.最后一块石头的重量Ⅱ &#x1f34a;总结 博客主页&#xff1a;lyyyyrics &#x1f347;什么是0/1背包问题&#xff1f; 0/1背包问题是…

实现ubuntu的任务计划反弹shell

1.实验目的 使用Ubuntu定时任务反弹shell 2实验环境 ubuntu&#xff1a;ip地址&#xff1a;192.168.80.133 kali&#xff1a;ip地址&#xff1a;192.168.80.134 3.编写crontab计划任务 在ubuntu的系统中使用crontab -e命令编写计划任务 作用&#xff1a;是将一个交互式的…

【基于R语言群体遗传学】-12-超显性与次显性

欢迎先看前面的博客&#xff0c;再继续进行后面的内容&#xff1a; 群体遗传学_tRNA做科研的博客-CSDN博客 当杂合子的适应度超出纯合子的范围时&#xff0c;二倍体能够展现出更多令人着迷的选择实例。这种形式的一种是杂合子优势&#xff0c;或称为“超显性”&#xff0c;其…

MySQL中的数据类型

这里写目录标题 数值类型整数类型浮点数类型定点数类型 日期和时间类型字符串类型定长字符串变长字符串文本类型二进制类型 枚举和集合类型选择标准示例 SET FOREIGN_KEY_CHECKS0; DROP TABLE IF EXISTS sys_user; CREATE TABLE sys_user (user_id bigint NOT NULL AUTO_INCREM…

轻松转换!两款AI工具让word秒变ppt!

想把Word文档一键生成PPT&#xff0c;过去有一个很常见的做法&#xff1a;先在Word文档中设置标题样式&#xff0c;通过标题样式来分隔每一部分&#xff0c;之后导出为PPT&#xff0c;就能得到一份PPT的雏形&#xff0c;但这种方法无法对PPT自动进行美化&#xff0c;即得到的只…

现货黄金技术出现这一信号赶紧止损!

很多现货黄金投资者都并不知道&#xff0c;移动平均线除了可以用于寻找进场的机会&#xff0c;还可以用来设置止损&#xff0c;让自己在交易中更好地进行防守。其实移动平均线止损&#xff0c;是常用的技术止损方法之一&#xff0c;本文将和大家分享怎样利用均线设置止损点&…

Java | Leetcode Java题解之第217题存在重复元素

题目&#xff1a; 题解&#xff1a; class Solution {public boolean containsDuplicate(int[] nums) {Set<Integer> set new HashSet<Integer>();for (int x : nums) {if (!set.add(x)) {return true;}}return false;} }

VSCode远程连接Linux服务器

VSCode远程连接Linux服务器 一、下载VSCode二、远程连接Linux服务器2.1 安装插件2.2 连接linux服务器 我用的Linux服务器(腾讯云服务器&#xff0c;如果是虚拟机需要手动去配置ssh)&#xff0c;操作系统是ubuntu 20.04&#xff08;系统如果不一样&#xff0c;可以重装系统&…

2024/7/7总结

Servlet WebServlet("/demo2") public class servlet_demo2 extends HttpServlet {/*** 就绪/服务方法&#xff08;处理请求数据&#xff09;* 系统方法&#xff0c;服务器自动调用* 当有请求到达servlet时&#xff0c;就会调用该方法* 方法可以被多次调用* param r…