python02 循环与容器

news2024/11/19 6:13:15

一、if的条件判断

1-1 if elif else

  • 判断年龄属于哪个年龄段

# 判断学生
core = input('请输入成绩')
​
if int(core) >=90 :
    print('优秀')
elif int(core) >=70 and int(core) <90:
    print('中等')
elif int(core) >=60 and int(core) <70:
    print('及格')
else:
    print('不及格')

​

时间段, 成绩的划分,星座判断

1-2 if 嵌套

if 判断条件1:
    if 判断条件2:
        if 判断条件3:
            
        else:
            第3个条件不成时执行
    else:
        第2个条件不成时执行
else:
    第1个条件不成时执行

可以控制判断的执行顺序,进行多次判断

# if嵌套使用
name = input('请输入用户名:')
password = input('请输入密码:')
# 先判断用户名是否正确
if name == '张三':
    # 在判断密码是否正确
    if password=='123456':
        print('登录成功')
​
    else:
        print('密码不正确')
else:
    print('用户名不正确')

二、While循环

保证Python程序根据要求能持续运行

可以使用循环语句的语法实现循环运行,可以执行循环条件,当不满足条件后退出循环

  • 语法格式

    • 循环的代码逻辑要在下一行开始,开头空四格

    • 条件成立,循环中代码逻辑会一直执行

while 数据判断条件:
    编写循环执行的业务逻辑
    修改退出条件数据
# while 一般用在需要程序持续运行时使用
a = 1
while a == 1:
    # 条件成立,会一直运行while内的代码逻辑
    name = input('请输入用户名:')
    password = input('请输入密码:')
    # 先判断用户名是否正确
    if name == '张三':
        # 在判断密码是否正确
        if password == '123456':
            print('登录成功')
            # 通过修改变量值,改变判断条件不成立,此时就可以退出循环
            a = 2
        else:
            print('密码不正确')
    else:
        print('用户名不正确')
​
  • 控制循环输入次数不能超过三次

a = 1
while a <= 3:
    # 条件成立,会一直运行while内的代码逻辑
    name = input('请输入用户名:')
    password = input('请输入密码:')
    # 先判断用户名是否正确
    if name == '张三':
        # 在判断密码是否正确
        if password == '123456':
            print('登录成功')
            # 通过修改变量值,改变判断条件不成立,此时就可以退出循环
            a = 6
        else:
            print('密码不正确')
    else:
        print('用户名不正确')

三、For循环

while 主要控制数据处理的次数

for 遍历获取数据(容器形式的数据)中每个元素数据,字符串,列表,字典,元祖,集合,range方法

for循环的次数是有容器内的元素个数决定

  • 语法格式

for i(临时变量,接收循环的元素数据) in 容器数据:
    对临时变量中的数据进行操作
  • range的使用,可以根据指定数值生成范围内的容器数据

    • range(10) 生成0-10范围内的数据 起始从0开始

    • range(2,10) 生成的范围是 2-10

    • 生成的范围数据是左闭右开 [0,10) 0可以取到值,10取不到值

# for循环  [0,5)
for i in range(5):
    print(i)
​
for i in range(2,5): # [2,5)
    print(i)

四、Break和Continue

break 跳出循环或结束循环

continue 跳过当前这一次循环,执行下次循环

可以对循环的数据进行判断,如果符合条件可以进行跳出循环或跳过循环

  • break退出for循环

for num in range(3): # [0,3)  0,1,2
    name = input('请输入用户名:')
    password = input('请输入密码:')
    # 先判断用户名是否正确
    if name == '张三':
        # 在判断密码是否正确
        if password == '123456':
            print('登录成功')
            # 使用break关键,会结束循环,不再进行取值
            break
        else:
            print('密码不正确')
    else:
        print('用户名不正确')

  • 遍历1-10数据,只对偶数数据输出

for data in range(1,11):
    # 对data数据进行奇数判断
    if data % 2 !=0:
        # 跳过
        continue
        # continue被执行,continue后面逻辑就不会被执行
    print(data)

五、容器类型介绍

容器就是存放数据的

python 中的容器数据有多种形式,每种形式有自己的存储格式, 数据存储特性不一样

字符串 str 就是容器 存放一个一个字母 格式 : 单引号 '数据' ,双引号 "数据" ,三个引号 """ 数据 """

列表 list 格式: [数据1,数据2,数据3.....]

元祖 tuple 格式: (数据1,数据2,数据3,)

集合 set 格式: {数据1,数据2,数据3,}

字典 dict 格式: {key1:value1,key2:value....}

数据存储的特性

  • 有序和无序

    • 有序: 字符串,列表,元祖,字典

    • 无序: 集合

  • 数据重复性

    • 允许数据重复 字符串,列表,元祖,字典的value部分可以重复

    • 不允许重复 集合,字典的key值

  • 数据是否允许修改

    • 允许修改 列表,字典value数据可以修改,

    • 不允许修改 字符串 ,元祖

常用的字符串,列表和字典

六、字符串

字符串就是有一个一个字母构成,使用引号包裹数据

data_str1 = '数据'
data_str2 = "数据"
data_str3 = '''数据'''

6-1 下标取值

在有序的容器中,会对数据的顺序进行编号,该编号就称为数据下标。可以通过下标取出对应位置中的数据

下标编号是从0开始

数据:i t c a s t

下标:0 1 2 3 4 5

  • 字符串的下标取值

    • 一次取出一个下标对应的数据

# 有序容器的下标取值
data_str = 'itcast'
​
# 下标取一个值
print(data_str[2])
  • 切片

    • 指定下标范围进行取值

    • [起始下标:结束下标] 下标的范围是左闭右开的,结束下标的值取不到

# 有序容器的下标取值
data_str = 'itcast'
​
# 下标取一个值
print(data_str[2])
​
# 下标取多个值 使用切片  [起始下标:结束下标]  取值范围也是左闭右开 结束下标的数据无法取到
print(data_str[1:4])
​
​
​
  • 间隔步长取值

# 有序容器的下标取值
data_str = 'itcast'
​
# 下标取一个值
print(data_str[2])
​
# 下标取多个值 使用切片  [起始下标:结束下标]  取值范围也是左闭右开 结束下标的数据无法取到
print(data_str[1:4])
​
# 间隔取多个值  使用切片  [起始下标:结束下标:步长]
print(data_str[1:6:2]) # 起始从1开始  下一个值是 1+2=3   1+2+2=5
  • 下标的其他操作

# 单个取值时超过下标值或报错
print(data_str[6])

# 切片进行多个数据取值超出下标,不会报错,将后面的数据全部取出
print(data_str[1:1000])
# 取值的下标可以是负数
print(data_str[-4:-2])

# 如果需要改变起始位置从右边开始,则需要将步长设置为-1
# 可以实现字符串的反转
print(data_str[-1:-7:-1])
# 需要获取所有的的字符可以省略起始和结束下标
print(data_str[::-1])

6-2 for循环取值

依次从字符串中取出每一个字母,该过程叫做数据遍历

# 遍历字符串数据
data = 'itcast'
for i in data:
    print(i)

6-3 函数方法

  • find 找字符在字符串中位置,返回对应的首字母的下标,数据不存在返回-1

# 字符串的函数操作方法
# 查找字符在字符串中的下标位置
data = 'itcast'
# num接收查找到的下标 如果存在返回对应位置下标,不存在返回-1
num = data.find('w')
print(num)
  • index 找字符在字符串中位置,返回对应的首字母的下标,数据不存在报错

num2 = data.index('w')
print(num2)
  • split 字符串的切割

    • 切割后的数据会放入列表中返回

data_str = 'python,hadoop,spark,flink'
# split的切割字符串
res =  data_str.split(',')
print(res)
  • replace 字符串的替换,替换字符串中的数据

    • 除了可以替换数据,还可以清洗数据

data_str2 = '2024-10-11'
# 字符串替换
res2 = data_str2.replace('-','/')
print(res2)
​
​
data_str3 = '机器哦@我觉得#千库网'
# 通过replace的替换去除特殊字符
res3 = data_str3.replace('@','').replace('#','')
print(res3)

七、列表

7-1 列表定义

语法格式

[数据1,数据2.....]

# 列表的定义及取值
# 在列表中可以定义指定多个数据内容,尽量保证数据类型一致
data_list = [1, 20, 33, 15, 18, 21]
data_list2 = ['spark', 'hadoop', 'flink', 'python']
data_list3 = [1, '张三', 20]

7-2 列表取值

可以通过下标和切片取值

for循环遍历取值

# 列表的定义及取值
# 在列表中可以定义指定多个数据内容,尽量保证数据类型一致
data_list = [1, 20, 33, 15, 18, 21]
data_list2 = ['spark', 'hadoop', 'flink', 'python']
data_list3 = [1, '张三', 20]
​
# 列表也是有序容器,所以支持下标取值
# 单个取值
print(data_list[1])
print(data_list2[2])
​
# 切片取多个值
print(data_list[1:5])
​
# 步长间隔取值
print(data_list[1:5:2])
​
# 循环遍历取值
for i in data_list3:
    print(i)
​
​
# 列表嵌套列表
data_list4 =[[1,2,3],['a','b','c']]
​
print(data_list4[1][0])

7-3 列表的增删改查方法

增加
  • append

    • 常用来增加一个元素数据

  • extend

    • 将另一个列表的数据合并当前列表

  • insert

    • 指定下标位置增加数据

# 添加列表数据
data_book = []  # 定义一个空列表
# append添加数据,将数据添加到列表末尾
data_book.append('昆仑')
data_book.append('沧海')
data_book.append('五大贼王')
# 查看原始数据
print(data_book)
# insert 可以指定下标位置添加
data_book.insert(1, '青盲')
# 查看数据
print(data_book)
​
# extend将一个列表数据合并另一个列表中
data_book_new = ['大魔术师', '冒死记录']
data_book.extend(data_book_new)
print(data_book)
​
# 使用运算符 + 将列表合并
data_book_new2 = ['死亡通知单', '暗黑者', '摄魂谷', '凶画']
res = data_book + data_book_new2
print(res)
​
删除
  • del 数据[下标] 删除指定下标的数据

  • remove 删除列中指定的数据

  • pop() 弹出列表中的数据,数据弹出后会从列表中删除

    • 默认从最后一个数据弹出

  • clear() 清除所有列表中的数据,变成空列表

# 删除列表中的数据
data_book = ['诛仙','斗破苍穹','盗墓笔记','年少荒唐','极品家丁','坏蛋是怎么练成的']
​
# 通过指定下标删除
del data_book[3]
print(data_book)
# 指定数据删除
data_book.remove('极品家丁')
print(data_book)
# 弹出数据删除  将末尾数据弹出 可以定义接收变量,接收弹出的数据
res = data_book.pop()
print(data_book)
# 清空列表数据
data_book.clear()
print(data_book)
修改
  • 指定下标对应的数据进行修改

    • 列表[下标] = 修改的值

  • 列表数据的反转 修改顺序

  • 排序

# 修改列表数据
data_book = ['紫川', '三重门', '从你的全世界路过', '梦里花落知多少']
​
# 通过下标修改数据
data_book[1] = '善恶的彼岸'
print(data_book)
​
# 列表反转
data_book.reverse()
print(data_book)
​
# 列表排序
data_list = [1,7,2,4,3]
data_list.sort(reverse=False)
print(data_list)
data_list.sort(reverse=True)
print(data_list)
查询
  • index 查询数据在列表中的下标位置

  • count 查询数据出现的次数

  • in 查找数据是否在列表中

    • not in 不在列表中

  • len 获取列表的元素个数

# 查询列表数据
data_book = ['道德的谱系','反基督','瞧,这个人','飞鸟集']
​
# index查询数据
num = data_book.index('反基督')
print(num)
# num = data_book.index('aa')
# print(num)
​
# count  统计数据出现次数
num2 = data_book.count('飞鸟集')
print(num2)
​
# 查询元素个数
num3 = len(data_book)
print(num3)
​
# 判断元素是否在列表中
if '道德的谱系' in data_book:
    print('数据在列表中')
    
# not in 是判断不在列表中

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

不同类型水表计量技术的优缺点

1.单流束水表 1.1优点 (1)耐受悬浮固体。适用于硬水或悬浮颗粒物。 (2)多样性&#xff0c;可用性&#xff0c;容易找到需要的合适的表型。 (3)技术可靠&#xff0c;已使用了数十年。 (4)体积小&#xff0c;可以安装在狭小的空间里。 (5)13mm、15mm、20mm水表可能是市面…

【Java面试】一、Redis篇(上)

文章目录 0、准备1、缓存穿透&#xff1a;不存在的key2、缓存击穿&#xff1a;热点key过期3、缓存雪崩&#xff1a;大批key同时过期4、双写一致性4.1 要求高一致性4.2 允许一定的一致延迟 5、面试 0、准备 Redis相关概览&#xff1a; 以简历上所列的项目为切入点&#xff0c;展…

《2024年中国机器人行业投融资报告》| 附下载

近年来&#xff0c;国内机器人行业取得了显著的技术进步&#xff0c;包括人工智能、感知技术、自主导航等技术方面的突破&#xff0c;使得机器人能够更好地适应复杂环境和任务需求&#xff0c;带动了机器人行业加快发展。 当然&#xff0c;技术的进步是外在驱动因素&#xff0…

WPF密码输入框明文掩码切换

1&#xff0c;效果 2&#xff0c;代码&#xff1a; WPF的PasswordBox不能像Winform中的PasswordBox那样&#xff0c;通过PasswordBox.PasswordChar(char)0显示明文。所以这里使用无外观控件构筑掩码明文切换。 无外观控件遵守Themes/Generic.xaml文件配置. <ResourceDicti…

Qt下载安装及配置教程(非常详细),从零基础入门到精通,看完这一篇就够了

进入qt中文网站&#xff1a;https://www.qt.io/zh-cn/ 下载开源版 往下滑&#xff0c;下载Qt在线安装程序 它已经检测出我的是windows系统&#xff0c;直接点击download就好。如果是其它的系统&#xff0c;需要找到对应自己系统的安装包。 然后跟网速有关&#xff0c;等…

Github 2024-05-24 Java开源项目日报 Top10

根据Github Trendings的统计,今日(2024-05-24统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目10Java设计模式:提高开发效率的正规化实践 创建周期:3572 天开发语言:Java协议类型:OtherStar数量:86766 个Fork数量:25959 次关…

捕捉二氧化碳也能赚钱?深入探索CCUS技术与商业前景

引言 随着全球变暖和气候变化的加剧&#xff0c;如何有效减少二氧化碳&#xff08;CO2&#xff09;排放成为各国亟待解决的问题。近日&#xff0c;全球最大的二氧化碳捕集工厂在冰岛正式运营&#xff0c;这一消息引起了广泛关注。本文将深入探讨捕集二氧化碳技术&#xff08;C…

ssm139选课排课系统的设计与开发+vue

选课排课系统的设计与开发vue 摘 要 互联网的普及&#xff0c;改变了人们正常的生活学习及消费习惯&#xff0c;而且也大大的节省了人们的时间&#xff0c;由于各种管理系统都再不断的增加&#xff0c;更方便了用户&#xff0c;也改良了很多的用户习惯。对于选课排课系统查询…

【软件设计师】2018年的上午题总结

2018 2018上半年2018下半年 2018上半年 1.小阶向大阶对齐 2.吞吐率是最长流水段操作时间的倒数 3.ssh的端口号是22 4.s所发送的信息使用s的私钥进行数字签名&#xff0c;t收到后使用s的公钥验证消息的真实性 5.数据流分析是被动攻击方式 6.《计算机软件保护条例》是国务院颁布…

NodeJS安装并生成Vue脚手架(保姆级)

文章目录 NodeJS下载配置环境变量Vue脚手架生成Vue脚手架创建项目Vue项目绑定git 更多相关内容可查看 NodeJS下载 下载地址&#xff1a;https://nodejs.org/en 下载的速度应该很快&#xff0c;下载完可以无脑安装&#xff0c;以下记得勾选即可 注意要记住自己的安装路径&…

Dilworth 定理

这是一个关于偏序集的定理&#xff0c;事实上它也可以扩展到图论&#xff0c;dp等中&#xff0c;是一个很有意思的东西 偏序集 偏序集是由集合 S S S以及其上的一个偏序关系 R R R定义的&#xff0c;记为 ( S , R ) (S,R) (S,R) 偏序关系&#xff1a; 对于一个二元关系 R ⊂…

项目9-网页聊天室7(消息传输模块之解决之前存在的问题:获取最后一条消息)

1.服务器中转的原因 IPV4不够用 &#xff08;1&#xff09;使用服务器中转,最大原因, 就是 NAT 背景下,两个内网的设备无法直接进行通信(不在同一个局域网内) &#xff08;2&#xff09;另外一个原因,通过服务器中转,是更容易在服务器这里记录历史消息随时方便咱们来查询历史记…

01-05.Vue自定义过滤器

目录 前言过滤器的概念过滤器的基本使用给过滤器添加多个参数 前言 我们接着上一篇文章01-04.Vue的使用示例&#xff1a;列表功能 来讲。 下一篇文章 02-Vue实例的生命周期函数 过滤器的概念 概念&#xff1a;Vue.js 允许我们自定义过滤器&#xff0c;可被用作一些常见的文本…

中国人工智能大模型价格战

近年来&#xff0c;人工智能技术迅猛发展&#xff0c;尤其是大模型领域的突破让人们看到了更多的可能性。然而&#xff0c;在这一高科技领域&#xff0c;中美两国的竞争日趋激烈。近日&#xff0c;中国互联网巨头们纷纷启动大模型价格战&#xff0c;引发了广泛关注。这场价格战…

rockeylinux 搭建k8s 1.28.10

1.关闭防火墙 systemctl stop firewalld systemctl disable firewalld 2.关闭selinux # 临时禁用selinux # 将 SELinux 设置为 permissive 模式&#xff08;相当于将其禁用&#xff09; setenforce 0 sed -i s/^SELINUXenforcing$/SELINUXpermissive/ /etc/selinux/config 3.网…

MATLAB学习:频谱图的绘制

1.概述 时域信号经FFT变换后得到了频谱,在作图时还必须设置正确的频率刻度,这样才能从图中得到正确的结果。 2.案例分析 下面透过一个简单的例子来分析频谱图中频率刻度(横坐标)的设置的重要性。一余弦信号,信号频率为30Hz,采样频率100Hz,信号长128,在FFT后做谱图&#xff0…

AtCoder Beginner Contest 354 (ABCDEFG题)视频讲解

2024年5月19日补充G题。 A - Exponential Plant Problem Statement Takahashi is growing a plant. Its height at the time of germination is 0 c m 0\,\mathrm{cm} 0cm. Considering the day of germination as day 0 0 0, its height increases by 2 i c m 2^i\,\mat…

AWS迁移与传输之AMS/MGN

AWS Application Migration Service&#xff08;AWS Application Migration Service简称为AWS MGN&#xff0c;MGN是migration的缩写。&#xff09;是一项全面的迁移服务&#xff0c;旨在帮助企业将其本地服务器和虚拟机迁移到云端&#xff0c;包括AWS和VMware Cloud on AWS。 …

Bugku Crypto 部分题目简单题解(四)

目录 python_jail 简单的rsa 托马斯.杰斐逊 这不是md5 进制转换 affine Crack it rsa python_jail 启动场景 使用虚拟机nc进行连接 输入print(flag) 发现报错&#xff0c;经过测试只能传入10个字符多了就会报错 利用python中help()函数&#xff0c;借报错信息带出flag变…

海康威视NVR通过ehome协议接入视频监控平台,视频浏览显示3011超时错误的问题解决,即:The request timeout! 【3011】

目录 一、问题描述 二、问题分析 2.1 初步分析 2.2 查看日志 2.3 问题验证 1、查看防火墙 2、查看安全组 3、问题原因 三、问题解决 3.1 防火墙开放相关端口 3.2 安全组增加规则 3.3 测试 1、TCP端口能够联通的情况 2、TCP端口不能够联通的情况 四、验证 五、云…