Python3:内置数据结构--字符串、列表、元组、集合、字典

本文详细介绍了Python3中的字符串、列表、元组、集合和字典等内置数据结构。内容包括创建与赋值、基本特性、内建方法、操作实例及算法练习题,如回文字符串判断、IPV4合法性验证等。
摘要由CSDN通过智能技术生成

1. 字符串

1.1 创建和赋值

字符串或串是由数字、字母、下划线组成的一串字符。可以简单的通过在引号间(单引号、双引号、三引号)包含字符的方式创建它。

在这里插入图片描述

一个反斜线加一个单一字符可以表示一个特殊字符,通常是不可打印的字符。

在这里插入图片描述
在这里插入图片描述

1.2 字符串的基本特性

1.2.1 连接操作符和重复操作符

- 连接:+   重复:*

	name = 'yxy'
	print('hello' + name)
	print('*'*10)


	结果:
	helloyxy
	**********

1.2.2 成员操作符

- 成员操作符:in

	s = 'hello yxy'
	print('yxy' in s)
	print('yxy' not in s)

	结果:
	True
	False

1.2.3 正向索引和反向索引

- 正向索引和反向索引

	s = 'have a good time'
	print(s[1])   #a
	print(s[-4])  #t

1.2.4 切片

- range:
range(3)
range(1,6,2)

- 切片:切除一部分的内容,从0开始
 s[start:end:step]
 s[:end]
 s[start:]

- 切片总结:
s[:n]       拿出前n个元素
s[n:]       拿出后n个元素
s[:]        从开始到结尾,显示全部内容
s[::-1]     倒叙

在这里插入图片描述

1.2.5 可迭代对象/for循环

for循环访问:

s='mmwyj'
count=0
for item in s:
    count+=1
    print(f"第{count}个元素:{item}")

结果:
第1个元素:m
第2个元素:m
第3个元素:w
第4个元素:y
第5个元素:j

1.2.6 练习- - -回文字符串

用户输入一个字符串, 判断该字符串是否为回文字符串。
eg: "aba"是回文字符串, "abba"也是回文字符串。 "abc"不是回文字符串。

way1:
while True:
    str1 = input("please input string:")
    if str1[:] == str1[::-1] :
        print(f"{str1}是回文字符串!")
    else:
        print(f"{str1}不是回文字符串!!")


way2:
s = input("please input string:")
result = "是回文字符串" if s == s[::-1] else "不是回文字符串"
print(s  + result

1.3 字符串的内建方法

1.3.1 字符串的判断与转换

在这里插入图片描述
类型的判断:

s = 'hello mmyxy'
print(s.isalnum())   #False
print(s.isdigit())   #False
print(s.islower())   #True

类型的转换:

s='Hello'
print('Hello'.upper())			#HELLO
print('Hello'.lower())			#hello
print('Hello'.title())			#Hello
print('Hello'.capitalize())		#Hello
print('Hello'.swapcase())		#hELLO

需求:用户输入Y或者y都继续执行代码

chose = input("是否选择继续安装程序:Y/y表示同意:")
if chose.lower() == 'y':
    print('正在安装程序!!~~~')

1.3.2 字符串的开头和结尾的匹配

在这里插入图片描述

# 1. startswith 以什么开头

url='http://www.baidu.com'
if url.startswith('http'):
    print(f"{url}是一个正确的网址,可以爬取网站的代码")
else:
    print(f"{url}不是一个正确的网址,不可以爬取网站代码哦")
    

http://www.baidu.com是一个正确的网址,可以爬取网站的代码
# 2. endswith 以什么结尾
#    常用场景:判断文件的类型

filename = 'hello.png'
if filename.endswith('.png'):
    print(f"{filename}是一个图片")
elif filename.endswith('.mps'):
    print(f"{filename}是一个音乐")
else:
    print(f"{filename}是一个其他文件")
     

hello.png是一个图片

1.3.3 字符串的数据清洗

在这里插入图片描述

数据清洗的思路:
    strip:删除开头结尾的空格,广义的空格如真实的空格‘ ’,\n \t 等也都删除
    lstrip:删除左侧的空格,广义的空格如真实的空格‘ ’,\n \t 等也都删除
    rstrip:删除右侧的空格,广义的空格如真实的空格‘ ’,\n \t 等也都删除
    replace:替换
s=' hello mmyxy  '
print(s.strip())
print(s.lstrip())
print(s.rstrip())
print(s.replace(' ','&'))


hello mmyxy
hello mmyxy  
 hello mmyxy
&hello&mmyxy&&

1.4 字符串的位置调整

在这里插入图片描述

print("学生管理系统".center(50))
print("学生管理系统".center(50,'*'))
print("学生管理系统".ljust(50,'*'))
print("学生管理系统".rjust(50,'-'))


#输出结果
                      学生管理系统                      
**********************学生管理系统**********************
学生管理系统********************************************
--------------------------------------------学生管理系统

1.5 字符串的搜索、统计

在这里插入图片描述

s = 'hello world'
# find如果找到子串,则返回字串的索引位置,否则返回-1
# index如果找到字串,则返回子串的索引位置,否则报错(抛出异常)

print(s.find('llo'))
print(s.find('xxx'))
print(s.index('he'))
print(s.count('l'))
print(s.count('xxx'))
print(s.find('l',1,3))
#print(s.index('xxx'))

输出结果:
2
-1
0
3
0
2

1.6 字符串的分离与拼接

在这里插入图片描述

ip = '192.168.43.1'
item1 = ip.split('.')       #分离
print(item1)
item2 = '-'.join(item1)     #拼接
print(item2)


['192', '168', '43', '1']
192-168-43-1

1.7 string模块

# 需求:随机生成100个验证码
import random,string
for i in range(100):
    print(''.join(random.sample(string.digits,2)) + ''.join(random.sample(string.ascii_letters,4)))

在这里插入图片描述

1.8 其他内置方法

s = 'hello world'
print(len(s))           返回字符串的字符数
print(max(s))           返回最大的字符,(按照 ASCII 码值排列)
print(min(s))           返回最小的字符,(按照 ASCII 码值排列)
print(enumerate(s))     枚举对象同时列出数据和数据下标
print(zip(s))           将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表

1.9 小学生计算能力测试系统

设计一个程序,用来实现帮助小学生进行算术运算练习,它具有以下功能:提供基本算术运算(加减乘)的题目,每道题中的操作数是随机产生的,练习者根据显示的题目输入自己的答案,程序自动判断输入的答案是否正确并显示出相应的信息,最后显示正确率。

  • 思路:
    运行程序, 设定测试次数,输入测试数字的大小范围
    任意键进入测试
    系统进行测试并判断对错
    系统根据得分情况进行总结,退出程序
import random
count = int(input("please input test count:"))
right_count=0
for i in range(count):
    num1 = random.randint(1,10)
    num2 = random.randint(1,10)
    symbol = random.choice(["+","-","*","/"])
    result = eval(f"{num1}{symbol}{num2}")
    question = print(f"{num1}{symbol}{num2}=")
    user_answer = int(input(f"答案为:"))
    if user_answer == result:
        right_count += 1
        print("回
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值