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])
  • 38
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值