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':
        break
    print(f'You entered: {user_input}')

示例 4:continue 语句

i = 0
while i < 10:
    i += 1
    if i % 2 == 0:
        continue
    print(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:
        break
    print(i)

for i in range(10):
    if i % 2 == 0:
        continue
    print(i)

嵌套循环中的 break

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

for i in range(3):
    for j in range(3):
        if j == 1:
            break
        print(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 random

secret_number = random.randint(1, 100)
guess = None
attempts = 0

while guess != secret_number:
    guess = int(input('猜一个 1 到 100 之间的数字: '))
    attempts += 1
    if 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] += 1
    else:
        char_count[char] = 1

for 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 循环则在处理需要满足特定条件时特别有用。理解并掌握这两种循环的用法,可以大大提高代码的可读性和效率。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux 一键部署Mysql 8.4.1 LTS

mysql 前言 MySQL 是一个基于 SQL(Structured Query Language)的数据库系统,SQL 是一种用于访问和管理数据库的标准语言。MySQL 以其高性能、稳定性和易用性而闻名,它被广泛应用于各种场景,包括: Web 应用程序:许多动态网站和内容管理系统(如 WordPress)使用 MySQL 存…

STM32学习历程(day6)

EXTI外部中断使用教程 首先先看下EXTI的框图 看这个框图就能知道要先初始化GPIO外设 那么和前面一样 1、先RCC使能时钟 2、配置GPIO 选择端口为输入模式&#xff0c; 3、配置AFIO&#xff0c;选择我们用的GPIO连接到后面的EXTI 4、配置EXTI&#xff0c;选择边沿触发方式…

【Linux】升级FastJSON版本-jar

摘要 在长期运行的应用服务器上&#xff0c;近期的安全漏洞扫描揭示了fastjson组件存在潜在的安全隐患&#xff08;FastJSON是一个Java 语言实现的 JSON 解析器和生成器。FastJSON存在远程代码执行漏洞&#xff0c;恶意攻击者可以通过此漏洞远程执行恶意代码来入侵服务器&…

iOS 开发技巧 - 使用本地 json 文件

前言 使用本地 json 文件的场景&#xff0c;在我们开发功能的阶段&#xff0c;服务端接口字段定义好了后&#xff0c;有些接口响应很慢&#xff0c;请求到响应可能要 几十秒甚至一分钟&#xff0c;我们需要频繁调用接口来调试功能&#xff1b;还有就是调用一些我们需要付费的三…

coze搭建工作流和Agent

coze搭建工作流和Agent Agent LLM 记忆感知规划使用工具 LLM是大语言模型&#xff0c;prompt提示词影响LLM的输出质量 描述需求——>背景——>解决思路&#xff0c;提示词文档。 当有明确的需求和实现需求的路径时&#xff0c;可以通过搭建工作流来完成标准化任务为…

昇思25天学习打卡营第16天|应用实践之Vision Transformer图像分类

基本介绍 今天同样是图像分类任务&#xff0c;也更换了模型&#xff0c;使用的时候计算机视觉版的Transformer&#xff0c;即Vision Transformer&#xff0c;简称ViT。Transformer本是应用于自然语言处理领域的模型&#xff0c;用于处理语言序列&#xff0c;而要将其应用于图像…

CentOS6用文件配置IP模板

CentOS6用文件配置IP模板 到 CentOS6.9 , 默认还不能用 systemctl , 能用 service chkconfig sshd on 对应 systemctl enable sshd 启用,开机启动该服务 ### chkconfig sshd on 对应 systemctl enable sshd 启用,开机启动该服务 sudo chkconfig sshd onservice sshd start …

三级_网络技术_12_路由设计技术基础

1.R1、R2是一个自治系统中采用RIP路由协议的两个相邻路由器&#xff0c;R1的路由表如下图(a)所示&#xff0c;当R1收到R2发送的如下图(b)的(V.D)报文后&#xff0c;R1更新的4个路由表项中距离值从上到下依次为0、3、3、4 那么&#xff0c;①②③④可能的取值依次为()。 0、4、…

LaySNS模板仿RiPro日主题素材源码资源下载响应式CMS模板

该主题是网上泛滥的RiPro主题仿制而成的laysns模板&#xff0c;原主题是很强大的&#xff0c; 全站功能是通过ajax响应实现的&#xff0c;但本人技术有限&#xff0c;只会仿&#xff0c;不会移植&#xff0c;&#xff08;主要ajax这里不知道怎么弄&#xff09;。 另外就是网上…

【linux服务器篇】-Redis-RDM远程连接redis

redis desktop manager 使用远程连接工具RDM连接redis 市面上比较常见的其中一款工具redis desktop manager 简单的说&#xff1a; Redis Desktop Manager 简单的来讲就是Redis可视化工具&#xff0c;可以让我们看到Redis中存储的内容。 redis desktop manager是一款功能强…

大型综合医院、妇幼保健院智慧产科信息系统源码,支持二次开发,授权后可商用。

一套采用java语言开发&#xff0c;前端框架为Vue&#xff0c;ElementUIMySQL数据库&#xff0c;前后端分离架构的数字化产科管理系统源码&#xff0c;自主版权&#xff0c;多个大型综合医院、妇幼保健院应用案例&#xff0c;支持二次开发&#xff0c;授权后可商用。 系统特点&a…

Qt/QML学习-ListView

QML学习 ListView例程视频讲解代码 main.qml import QtQuick 2.15 import QtQuick.Window 2.15 import QtQuick.Controls 2.15Window {id: windowwidth: 640height: 480visible: truetitle: qsTr("ListView")Rectangle {height: listView.heightwidth: listView.wi…

Pearson 相关系数的可视化辅助判断和怎么用

Pearson 相关系数的可视化辅助判断和怎么用 flyfish Pearson 相关系数 是一种用于衡量两个连续型变量之间线性相关程度的统计量。其定义为两个变量协方差与标准差的乘积的比值。公式如下&#xff1a; r ∑ ( x i − x ˉ ) ( y i − y ˉ ) ∑ ( x i − x ˉ ) 2 ∑ ( y i −…

328. 奇偶链表

https://leetcode.cn/problems/odd-even-linked-list/https://leetcode.cn/problems/odd-even-linked-list/ 解题思路&#xff1a; 把第一个和第二个节点分别作为奇数、偶数的头节点&#xff0c;当遇到奇节点&#xff0c;删除&#xff0c;并插入到奇数头节点后&#xff0c;这样…

【普中】基于51单片机的矩阵电子密码锁LCD1602液晶显示 proteus仿真+程序+设计报告+讲解视频

【普中】基于51单片机的矩阵电子密码锁LCD1602液晶显示设计 1.主要功能&#xff1a;讲解视频&#xff1a;2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单&&下载链接资料下载链接&#xff1a; 【普中】基于51单片机的矩阵电子密码锁LCD1602液晶显示设计 ( proteus仿真…

如何切换手机的ip地址

在数字时代的浪潮中&#xff0c;智能手机已成为我们日常生活中不可或缺的一部分。然而&#xff0c;随着网络安全问题的日益凸显&#xff0c;保护个人隐私和数据安全变得尤为重要。其中&#xff0c;IP地址作为网络身份的重要标识&#xff0c;其安全性与隐私性备受关注。本文将详…

使用 Hugging Face 的 Transformers 库加载预训练模型遇到的问题

题意&#xff1a; Size mismatch for embed_out.weight: copying a param with shape torch.Size([0]) from checkpoint - Huggingface PyTorch 这个错误信息 "Size mismatch for embed_out.weight: copying a param with shape torch.Size([0]) from checkpoint - Hugg…

[高频 SQL 50 题(基础版)]第一千七百五十七题,可回收且低脂产品

题目&#xff1a; 表&#xff1a;Products ---------------------- | Column Name | Type | ---------------------- | product_id | int | | low_fats | enum | | recyclable | enum | ---------------------- product_id 是该表的主键&#xff08;具有唯…

解决树形表格 第一列中文字没有对齐

二级分类与一级分类的文字没有对齐 <el-table:data"templateStore.hangyeList"style"width: 100%"row-key"id":tree-props"{ children: subData, hasChildren: hasChildren }" ><el-table-column prop"industryCode&quo…

Kettle常用参数配置

目录 一、时区二、时间戳三、tinyint类型转换 一、时区 Kettle链接mysql出现报错&#xff1a;Connection failed. Verify all connection parameters and confirm that the appropriate driver is installed. The server time zone value is unrecognized or represents more…