python高级进阶(一)[str字符串、set集合、dict字典]

目录

一、str字符串

1. 字符串的概念

2.字符串的特点

3. 定义字符串

4. 获取字符串中的某个元素

5. 遍历字符串

 6. 字符串的常用方法

6.1 判断

6.2 转换

6.3 查找 

6.4 切割 

6.5 去空白

7. 小案例【用户名和密码合法校验】 

8. 常用方法中 isdecimal() 和 isdigit() 的区别

 isdigit():

isdecimal():

总结:

二、set集合

1. 集合的概念

2. 集合的特点

3. 集合的创建

4. 集合的应用

5. 集合的常用方法

6. 集合的遍历

三、dict字典

1. 字典的概念

2. 字典的定义

3. 字典增删改查

4. 字典的遍历


一、str字符串

1. 字符串的概念

- 字符串是由多个字符组成的序列
- 是编程语言中表示文本的数据类型

2.字符串的特点

- 字符串是不可变的
- 字符串是可以被索引的
- 字符串是可以被切片的
- 字符串是可以被重复的
- 字符串是可以被连接的
- 字符串是可以被格式化的

3. 定义字符串

# 1. 定义字符串
# 定义字符串的三种方式
# 1. 使用双引号
string_both = "hello world"

# 2. 使用单引号
string_single = 'hello world'

# 3. 使用三引号
string_three = """
    hello world
"""

4. 获取字符串中的某个元素

 语法: 字符串[索引]

# 语法: 字符串[索引]
# 2.1 找到字符串中第一个元素
print(string_both[0])
# 2.2 找到字符串中最后一个元素
print(string_both[-1])
# 2.3 找到字符串中第二个元素
print(string_both[1])
# 2.4 找到字符串中倒数第二个元素
print(string_both[-2])

5. 遍历字符串

for i in string_both:
    print(i)

 6. 字符串的常用方法

6.1 判断

- isalnum() 判断是否为字母或数字
- isalpha() 判断是否为字母
- isdecimal() 判断是否为数字
- isdigit() 判断是否为数字
- isspace() 判断是否为空白
- startswith() 判断是否以某个字符串开头
- endswith() 判断是否以某个字符串结尾 

示例代码:

# 4.1 判断
# 4.1.1 判断是否为字母或数字
print(string_both.isalnum())
# 4.1.2 判断是否为字母
print(string_both.isalpha())
# 4.1.3 判断是否为数字
print(string_both.isdecimal())
# 4.1.4 判断是否为数字
print(string_both.isdigit())
# 4.1.5 判断是否为空白
print(string_both.isspace())
# 4.1.6 判断是否以某个字符串开头
print(string_both.startswith("hello"))
# 4.1.7 判断是否以某个字符串结尾
print(string_both.endswith("world"))

6.2 转换

- lower() 转换为小写
- upper() 转换为大写
- capitalize() 首字母大写
- title() 首字母大写,其他单词首字母大写
- swapcase() 大写转小写,小写转大写

示例代码: 

# 4.2 转换
# 4.2.1 转换为小写
print(string_both.lower())
# 4.2.2 转换为大写
print(string_both.upper())
# 4.2.3 首字母大写
print(string_both.capitalize())
# 4.2.4 首字母大写,其他单词首字母大写
print(string_both.title())
# 4.2.5 大写转小写,小写转大写
print(string_both.swapcase())

6.3 查找 

- find() 查找某个字符串的位置
- rfind() 查找某个字符串的最后位置
- index() 查找某个字符串的位置,如果没有则报错
- rindex() 查找某个字符串的最后位置,如果没有则报错
- count() 查找某个字符串出现的次数

示例代码 

# 4.3 查找
# 4.3.1 查找某个字符串的位置
print(string_both.find("hello"))
# 4.3.2 查找某个字符串的最后位置
print(string_both.rfind("hello"))
# 4.3.3 查找某个字符串的位置,如果没有则报错
print(string_both.index("hello"))
# 4.3.4 查找某个字符串的最后位置,如果没有则报错
print(string_both.rindex("hello"))
# 4.3.5 查找某个字符串出现的次数
print(string_both.count("hello"))

6.4 切割 

  - split() 切割字符串

示例代码: 

# 4.4 切割
# 4.4.1 切割字符串
print(string_both.split(" "))

6.5 去空白

- strip() 去除两端空白
- lstrip() 去除左端空白
- rstrip() 去除右端空白

示例代码:

# 4.5 去空白
# 4.5.1 去除两端空白
print(string_both.strip())
# 4.5.2 去除左端空白
print(string_both.lstrip())
# 4.5.3 去除右端空白
print(string_both.rstrip())

7. 小案例【用户名和密码合法校验】 

需求
● 用户名和密码格式校验程序
● 要求从键盘输入用户名和密码,分别校验格式是否符合规则
  ○ 如果符合,打印用户名合法,密码合法
  ○ 如果不符合,打印出不符合的原因,并提示重新输入
● 用户名长度6-20,用户名必须以字母开头
● 密码长度至少6位,不能为纯数字,不能有空格

分析:
1.从键盘输入用户名(需要while循环)
2.长度6-20
3.必须字母开头

4.输入密码(while循环)
5.密码长度至少6位
6.不能为纯数字
7.不能有空格

代码实现: 

# 5. 小案例:用户名和密码合法校验
# 校验用户名
while True:
    username = input("请输入用户名:")
    # 判断用户名的长度是否在 6 - 20 之间
    if 6 <= len(username) <= 20:
        # 判断用户名首字符是否是字母
        if username[0].isalpha():
            print("合格")
            break
        else:
            print("用户名首字符必须是字母")
    else:
        print("密码长度不正确")

# 校验密码
while True:
    password = input("请输入密码:")
    # 判断密码的长度
    if 6 <= len(password):
        # 密码不能为纯数字
        if not password.isdecimal():
            # 密码不能有空格
            if " " not in password:
                print("合格")
                break
            else:
                print("密码不能有空格")
        else:
            print("密码不能为纯数字")
    else:
        print("密码长度至少是6位")

 运行结果:

8. 常用方法中 isdecimal() 和 isdigit() 的区别

 isdigit():

这个方法检查字符串是否只包含数字字符。 它基于ASCII字符集,因此只识别0-9之间的字符为数字。 对于其他Unicode数字字符(如全角数字或其他语言的数字字符),isdigit() 会返回 False。

isdecimal():

这个方法也是检查字符串是否只包含数字字符,但是它更加宽松。 它识别任何Unicode数字字符,包括全角数字、罗马数字、分数和其他语言的数字字符。 基本上,只要字符在Unicode中被归类为数字,isdecimal() 就会返回 True。

总结:

如果你想检查一个字符串是否只包含ASCII数字(0-9),那么使用 isdigit()。

如果你想检查一个字符串是否包含任何Unicode数字字符,那么使用 isdecimal()。但是,要注意其可能存在的行为差异,并确保它在你的应用场景中表现如预期。

二、set集合

1. 集合的概念

- 集合是一种无序不重复元素的聚合,本质是一种数据结构。
- 集合常用于存储一组数据,但不关心数据的顺序。

2. 集合的特点

- 集合中的元素都是唯一的,不能出现重复的数据。
- 集合中的元素是无序的,没有添加顺序。

3. 集合的创建

- 创建空集合:set()
- 创建有元素的集合:{元素1, 元素2, ...}

示例代码:

# 1.set集合的创建
# 1.1 创建空集合
s1 = set()
print(s1)
# 1.2 创建有元素的集合
s2 = {"张三", "李四", "王二", "麻子", "赵能"}
print(s2)

4. 集合的应用

- 去重:去除列表中的重复数据。

示例代码:

# 2.set集合的应用
# 2.1 去重
l1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(l1)

5. 集合的常用方法

- 添加元素:add()
- 删除元素:remove()、discard()、pop()
- 判断元素是否存在:in、not in
- 获取集合元素个数:len()
- 清空集合:clear()
- 并集:union()
- 交集:intersection()
- 差集:difference()
- 对称差集:symmetric_difference()
- 集合转换为元组:tuple()
- 集合转换为列表:list()

 示例代码:

# 3.set集合的常用方法
# 3.1 添加元素
s1.add("张三")
s1.add("李四")
s1.add("王二")
s1.add("麻子")
s1.add("赵能")
print(s1)
# 3.2 删除元素
s1.remove("麻子")  # 删除元素,如果元素不存在,报错
s1.discard("赵能")  # 删除元素,如果元素不存在,不报错
print(s1.pop())  # 随机删除元素,并返回删除的元素 如果集合为空,报错
print(s1)
# 3.3 判断元素是否存在
print("麻子" in s2)
print("赵六" in s2)
# 3.4 判断元素是否不存在
print("麻子" not in s1)
print("张三" not in s1)
# 3.5 获取集合元素个数
print(len(s1))
# 3.6 清空集合
s1.clear()
print(s1)
# 3.7 并集
s3 = {6, 7, 8, 9, 10}
s4 = {1, 2, 3, 4, 5}
print(s3.union(s4))
# 3.8 交集
print(s3.intersection(s4))
# 3.9 差集
print(s3.difference(s4))
# 3.10 对称差集
print(s3.symmetric_difference(s4))
# 3.11 集合转换为元组
print(tuple(s3))
# 3.12 集合转换为列表
print(list(s3))

6. 集合的遍历

 - 遍历集合:for item in 集合:

示例代码:

# 4.set集合的遍历
for item in s6:
    print(item)

三、dict字典

1. 字典的概念

dictionary(字典) 是 除列表以外 Python 之中 最灵活 的数据类型,类型为dict
    ● 字典同样可以用来存储多个数据
    ● 字典使用键值对存储数据

2. 字典的定义

语法格式:
字典 = {key1: value1, key2: value2, key3: value3}
注意:
    ● 字典的键必须是唯一的
    ● 字典的键必须是不可变对象
    ● 字典的键可以是数字,字符串,元组
    ● 字典的键可以是任意数据类型

示例代码:

# 1. 字典的定义
dic = {"name": "张三", "age": 18, "gender": "男", "phone": "18888888888"}

3. 字典增删改查

对于添加和修改来说,key没有就是添加,key有就是修改
● 添加
    dict[key] = value
● 修改
    dict[key] = value
● 查询
    dict[key]
● 删除
    ● 删除元素 并且不返回删除元素的值 如果删除不存在会报错
    del dict[key]
    ● 删除元素 并且返回删除元素的值 如果删除不存在会报错
    dict.pop(key)
● 清空
    ● 清空字典
    dict.clear()

示例代码:

# 2. 字典增删改查
# 2.1 添加
dic["address"] = "北京"
print("添加成功", dic)

# 2.2 修改
dic["name"] = "李四"
print("修改成功", dic)

# 2.3 查询
print("查询成功", dic["name"])

# 2.4 删除
# poo()   pop 删除元素 并且返回删除元素的值 如果删除不存在会报错
dic.pop("name")
print("pop删除成功", dic)

# del 删除元素 并且不返回删除元素的值 如果删除不存在会报错
del dic["age"]
print("del删除成功", dic)

# clear 清空字典
dic.clear()
print("clear清空成功", dic)

运行结果:

4. 字典的遍历

● 遍历字典的key
    for key in dict:
        print(key)
    for key in dict.keys():
        print(key)
● 遍历字典的value
    for value in dict.values():
        print(value)
    for value in dict:
        print(dict[value])
● 遍历字典的key-value
    for key, value in dict.items():
        print(key, value)
    for key in dict:
        print(key, dict[key])

示例代码:

# 3. 字典的遍历
dic = {"name": "张三", "age": 18, "gender": "男", "phone": "18888888888"}
# 3.1 遍历字典的key, 下面两种方法同等
for key in dic:
    print("key:", key)

for key in dic.keys():
    print("key:", key)

# 3.2 遍历字典的value, 下面两种方法同等
for value in dic.values():
    print("value:", value)

for value in dic:
    print("value:", dic[value])

# 3.3 遍历字典的key-value, 下面两种方法同等
for key, value in dic.items():
    print("key:", key, "value:", value)

for key in dic:
    print("key:", key,"value:", dic[key])

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

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

相关文章

前端开发攻略---封装calendar日历组件,实现日期多选。可根据您的需求任意调整,可玩性强。

1、演示 2、简介 1、该日历组件是纯手搓出来的&#xff0c;没依赖任何组件库&#xff0c;因此您可以随意又轻松的改变代码&#xff0c;以实现您的需求。 2、代码清爽干净&#xff0c;逻辑精妙&#xff0c;您可以好好品尝。 3、好戏开场。 3、代码&#xff08;Vue3写法&#xff…

分布式与一致性协议之CAP(一)

CAP理论 概述。 在开发分布式系统的时候&#xff0c;会遇到一个非常棘手的问题&#xff0c;那就是如何根据业务特点&#xff0c;为系统设计合适的分区容错一致性模型&#xff0c;以实现集群能力。这个问题棘手在当发生分区错误时&#xff0c;应该如何保障系统稳定运行而不影响…

C++多态(个人笔记)

C多态 1.多态的定义以及实现1.1多态的构成条件1.2虚函数1.3虚函数的重写1.4override和final1.5函数重载&#xff0c;覆盖&#xff08;重写&#xff09;&#xff0c;隐藏&#xff08;重定义&#xff09;区别 2.抽象类2.1接口继承和实现继承的区别 3.多态原理3.1虚函数表3.2多态的…

SpringBoot整合七牛云实现图片的上传管理

唠嗑部分 各位小伙伴大家好&#xff0c;我是全栈小白&#xff0c;今天我们来分享一下SpringBoot如何整合七牛云存储实现图片的上传与存储 首先我们来说说图片存储&#xff0c;在项目中图片几乎是必不可少的&#xff0c;那么大家会选择怎样存储呢&#xff0c;当然有几种方案 …

软件游戏缺失d3dcompiler_43.dll怎么修复?分享多种靠谱的解决方法

在我们日常频繁地操作和使用电脑的过程中&#xff0c;时常会遇到一些突发的技术问题。其中一种常见的情况是&#xff0c;在尝试启动或运行某个应用程序时&#xff0c;系统会弹出一个错误提示窗口&#xff0c;明确指出当前电脑环境中缺少了一个至关重要的动态链接库文件——d3dc…

算法学习笔记Day9——动态规划初探

一、介绍 本文解决几个问题&#xff1a;动态规划是什么&#xff1f;解决动态规划问题有什么技巧&#xff1f;如何学习动态规划&#xff1f; 1. 动态规划问题的一般形式就是求最值。动态规划其实是运筹学的一种最优化方法&#xff0c;只不过在计算机问题上应用比较多&#xff…

STM32cubemx和HAL库的使用入门--点亮一颗LED

一&#xff1a;流程介绍 &#xff08;1&#xff09;环境搭建 1 &#xff1a;stm32cubemx安装 2 &#xff1a;stm32xxFW安装 3 &#xff1a;MDK5安装 4 &#xff1a;生成MDK版本project &#xff08;2&#xff09;stm32cubemx创建工程&#xff0c;选择芯片型…

删除链表的倒数第n个节点的最优算法实现

给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 提示&#xff1a; 链表中结点的数目为 sz 1 < sz < 300 < Node.val < 1001 < n < sz 你能尝试使用一趟扫描实现吗&#xff1f; 具体实现 要删除链表的倒数第 n 个…

OpenHarmony语言基础类库【@ohos.url (URL字符串解析)】

说明&#xff1a; 本模块首批接口从API version 7开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import Url from ohos.url URLParams9 URLParams接口定义了一些处理URL查询字符串的实用方法。 constructor9 constructor(init?…

基于Spring Boot的家具销售电商平台设计与实现

基于Spring Boot的家具销售电商平台设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 系统功能界面图&#xff0c;在系统首页可以查看首页…

代码随想录第44天|动态规划:完全背包理论基础 518.零钱兑换II 377. 组合总和 Ⅳ

动态规划&#xff1a;完全背包理论基础 代码随想录 (programmercarl.com) 动态规划之完全背包&#xff0c;装满背包有多少种方法&#xff1f;组合与排列有讲究&#xff01;| LeetCode&#xff1a;518.零钱兑换II_哔哩哔哩_bilibili 完全背包和01背包问题唯一不同的地方就是&…

xilinx Mailbox 中的ipi message地址计算方式

适用于openAmp mailbox ipi id对应的ipi message地址计算方式 官方openamp硬件配置解析 OpenAMP Base Hardware Configurations - Xilinx Wiki - Confluence openamp官方设备树 meta-openamp/meta-xilinx-tools/recipes-bsp/device-tree/files/zynqmp-openamp.dtsi at rel-v2…

C++:构造函数与析构函数

目录 构造函数 构造函数的概念 析构函数的作用 自定义构造函数与默认构造函数 自定义构造函数 默认构造函数 调用自定义构造函数 析构函 自定义析构函数和默认构造函数 自定义构造函数 默认析构函数 构造函数 构造函数的概念 我们通常的函数是都需要有返回值的,但…

共享单车数据分析与需求预测项目

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 项目背景 自动自行车共享系统是传统自行车租赁的新一代&#xff0c;整个会员、租赁和归还过程都变得自动化。通过这些系统&#xff0c;用户可以…

Jupyter的下载与安装

1.下载&#xff1a; 在anaconda的指定环境中 conda install nb_conda_kernels 2.打开 在anaconda指定环境中使用命令&#xff1a; jupyter notebook 3.输入指令后&#xff0c;会显示如下&#xff0c;根据显示地址打开 3. 在右边的new按钮处&#xff0c;选择相应环境&…

DTU如何用VPN

在工业物联网的应用中&#xff0c;数据传输单元&#xff08;DTU&#xff09;作为关键的通信设备&#xff0c;承担着现场设备与远程服务器之间的数据传输任务。然而&#xff0c;在某些情况下&#xff0c;由于网络环境的限制或安全需求&#xff0c;我们需要通过虚拟私人网络&…

SpringCloud系列(13)--Eureka服务名称修改和服务IP显示

前言&#xff1a;在上一章节中我们把服务提供者做成了集群&#xff0c;而本章节则是一些关于服务信息的配置&#xff0c;这部分知识对集群整体影响不大&#xff0c;不过最好还是掌握&#xff0c;毕竟万一有用到的地方呢 1、修改服务的名称 有时候我们想要修改服务的名称&#…

【深度学习】DDoS-Detection-Challenge aitrans2024 入侵检测,基于机器学习(深度学习)判断网络入侵

当了次教练&#xff0c;做了个比赛的Stage1&#xff0c;https://github.com/AItransCompetition/DDoS-Detection-Challenge&#xff0c;得了100分。 一些记录&#xff1a; 1、提交的flowid不能重复&#xff0c;提交的是非入侵的数量和数据flowid,看check.cpp可知。 2、Stage…

redis底层数据结构之ziplist

目录 一、概述二、ziplist结构三、Entry结构四、为什么ZipList特别省内存五、ziplist的缺点 redis底层数据结构已完结&#x1f44f;&#x1f44f;&#x1f44f;&#xff1a; ☑️redis底层数据结构之SDS☑️redis底层数据结构之ziplist☑️redis底层数据结构之quicklist☑️red…

Docker的资源控制管理——Cgroups

目录 引言&#xff1a; 一、CPU资源控制 1、简介 2、cgroup的四大功能&#xff1a; ①资源限制&#xff1a; ②优先级分配&#xff1a; ③资源统计&#xff1a; ④任务控制&#xff1a; 3、设置cpu使用率上限 4、查看CPU默认配置&#xff1a; 5、CPU压力测试 6、设…