pyhton内置的数据类型
一、内置数据类型的解释创建及赋值
pycharm的常用快捷键:
”ctrl +d 复制一整行“ ;
“按住ctrl 鼠标移动到查看的方法(endswith)位置,点击即可, 快速查看方法的源代码和解释说明
数据类型 | 描述 | 赋值 | 小小提示 |
---|---|---|---|
字符串 str | 用单引号 ’ ’ ,双引号 " “,三引号 “”” “”"引起来的字符信息 | str1=‘hello1’; str2=“hell2”;str3=“”“hello3"”" | |
数组 array | 存储同种数据类型的数据结构 | arr1=[1,2,3] ,arr2=[1.1, 2.2, 3.3] | |
列表 list | 打了激素的数组, 可以存储不同数据类型的数据结构 | list1=[1, 2.1, “hello”, Ture, 2e+5, [1,2,3] ] | |
元组 tuple | 带了颈箍咒的列表,和列表的唯一区别是不能增删改 | t1=(1, 2.4,True,2e+5,[1,2,3]) ; t2 = ( 1, ) | 如果元组只有一个元素,一定要加逗号 |
集合 set | 不重复且无序的 | set1={1,2,3};ste2={3,4} ;print(“交集:” set1 & set2, “并集:” set1 | set2) | 交集 &,并集 | |
字典 dict | {“key” : “value”},键值对,通过key可以快速的找到value值 | user ={“name”:‘aaa’, ‘age’ : 10 } ;print(user[‘name’]) |
二、表示转义的符号
转义字符 | 名称 | 功能 |
---|---|---|
\a | 响铃 | 用于输出响铃 |
\b | 退格(Backspace键) | 用于退回一个字符 |
\f | 换页 | 用于输出 |
\n | 换行符 | 用于输出 |
\r | 回车符 | 用于输出 |
\t | 水平制表符(Tab键) | 用于输出 |
\v | 纵向制表符 | 用于制表 |
\\ | 反斜杠字符 | 用于表示一个反斜杠字符 |
\’ | 单引号 | 用于表示一个单引号字符 |
\" | 双引号 | 用于表示一个双引号字符 |
\ddd | ddd是ASCII码的八进制值,最多三位 | 用于表示该ASCII码代表的字符 |
\xhh或\Xhh | hh是ASCII码的十六进制值,最多两位 | 用于表示该ASCII码代表最多两位的字符 |
实例操作
#转义字符: \n 换行
>>> s ="hello\nweerre"
>>> print(s)
hello
weerre
#转义字符: \t 相当于tap键
>>> s ="hello\tweerre"
>>> print(s)
hello weerre
二、字符串的基本特性
总结:
- 连接(+) 重复(*)
- 成员(in,not in)
- 索引:正向索引和反向索引
- 切片:s[start🔚step]
pycharm常用快捷键:格式化代码符合PEP8编码风格(Ctrl + Alt + L)
1.连接操作符 “ + ” ,提示:必须是同一数据类型才能相加
>>> name = 'aaa'
>>> print("hello " + name )
hello aaa
2. 重复操作符 “ * ”
>>> print("*" * 10 + '学生管理系统' + "*"*10)
**********学生管理系统**********
3.成员操作符 “ in ”
>>> s = 'linlin linyx'
>>> print('linyx' in s)
True
>>> print('linyx' not in s)
False
4. 正向索引和反向索引
获取特定偏移的元素,0,1,2,3,4
>>> s="WESTOS"
>>> print(s[0])
W
>>> print(s[3])
T
>>> print(s[-2])
O
5. 切片
回顾旧知识:
s = '012345'
range(3): [0,1,2]
range(1,4): [1,2,3]
range(1,6,2):[1,3,5]
(1)切片的用法:切除一部分的内容
- s[start: end:steep]
- s[:end]:
- s[start:]:
(2)切片用法练习
s = 'hello,westos'
>>> print(s[1:3])
el
>>> print(s[:3])
hel
>>> print(s[:5]) # 总结:s[:n] 是指拿出前n个元素
hello
>>> print(s[3:]) # 总结: s[n:] 是指除了前n个元素,其他元素保留
lo,westos
>>> print(s[:]) #总结: 拷贝字符串,从头开始访问一直到字符串结束的位置
hello,westos
>>> print(s[::-1]) #总结: 倒序输出
sotsew,olleh
6. for循环访问
s='westos'
count =0
for item in s:
count += 1
print(f"第{count}个字符:{item}")
7. 练习题
用户输入一个字符串,判断该字符串是否为回文字符串,例: ”aba“ ,"abba"都是回文字符串
方法一:
s=input("请输入字符串:")
s1 = s[::-1]
if s1 == s:
print(f"{s}字符串是回文字符串")
else:
print(f"{s}字符串不是回文字符串")
方法二:
s = input('输入字符串:')
result = ”回文字符串“ if s == s[::-1] else "不是回文字符串" #三元运算符
print(s + "是" + result)
#print(”回文字符串“ if s == s[::-1] else "不是回文字符串")
三. 常用方法
总结:
- 判断字符串的类型(isdigit ,isupper,islower,isalpha,isalnum)
- 字符串类型的转换(lower,upper,title,swapcase)
- 开头和结尾的判断(startswith,endswith)
- 数据清洗和替换(strip,lstrip,rstrip,replace)
- 分割与拼接(split,splitlines,join)
- 位置调整(center,ljust,rjust)
1. 字符串的判断和转换
(1)字符串类型的判断,是否是字母或数字或大写…
s = 'HelloWESTOS'
print(s.isalnum()) #True 是否是数字或者字母
print(s.isdigit()) #False 是否是数字
print(s.isupper()) #False 是否是大写字母
(2)类型的转换,大转小写,小写转大…
>>> print("hello".upper()) #转换成大写
HELLO
>>> print("hello".lower()) #转换成小写
hello
>>> print("HellO WORld ".title()) #转换成标题
Hello World
>>> print("HellO WORld ".capitalize()) #转换成首字母大写
Hello world
>>> print("HellO WORld ".swapcase()) #大写换小写,小写换大写
hELLo worLD
(3)使用场景
需求:用户输入Y或者y都继续运行代码,yum install httpd
思路:
choice = input("请问是否继续安装(Y|y)")
if choice.lower() == 'y':
print("程序正在安装......")
2. 字符串的开头和结尾匹配
(1)判断字符串的开头(startswith)
- 常用场景: 判断url是不是网址,http开头的网址
实例:
url = 'http://www.baidu.com'
if url.startswith('http'):
#具体实现爬虫,感兴趣的话可以看request模块
print(f'{url}'是一个正确的网址,可以爬取网站的代码)
(2)判断字符串的结尾(endswith)
- 常用场景: 判断文件的类型
实例:
filename = ‘hello.png’
if filename.endswith('.png'):
print(f'{filename}是图片文件')
elif filename.endswith('.mp3'):
print(f'{filename}是音乐文件')
else:
print(f'{filename}是未知文件')
3. 字符串的数字清洗,删除空格或替换
方法 | 解释说明 |
---|---|
strip | 删除字符串开头和末尾的空格(指广义的空格: \n , \t ,' ' ) |
lstrip | 删除字符串开头的空格(指广义的空格: \n , \t ,' ' ) |
rstrip | 删除字符串末尾的空格(指广义的空格: \n , \t ,' ' ) |
replace | 字符串替换。删除中间的空格,将空格替换为空 |
练习:
>>> " hello ".strip()
'hello'
>>> " hello ".lstrip()
'hello '
>>> " hello ".rstrip()
' hello'
>>> " he llo ".replace(" ","")
'hello'
4. 字符串的位置调整,剧中或偏左或偏右…
方法 | 解释说明 |
---|---|
center(width) | 字符串居中且长度为指定宽度 |
ljust(width) | 字符串左对齐且长度为指定宽度 |
rjust(width) | 字符串右对齐且长度为指定宽度 |
练习:
>>> "学生管理系统".center(50)
' 学生管理系统 '
>>> "学生管理系统".center(50,"*")
'**********************学生管理系统**********************'
>>> "学生管理系统".ljust(50,"-")
'学生管理系统--------------------------------------------'
>>> "学生管理系统".rjust(50,"-")
'--------------------------------------------学生管理系统'
5. 字符串的搜索和统计,查找某字符出现的次数及位置…
方法 | 解释说明 |
---|---|
find(str,beg,end) | 检测str 是否包含在string中,返回str开始的索引位置。否则返回-1 |
index(str,beg,end) | 检测str 是否包含在string中,返回str开始的索引位置,否则报错(抛出异常) |
count(str,beg,end) | 检测str 在string中出现的次数 |
>>> s = "hello westos"
>>> s.find("llo")
2
>>> s.index("llo")
2
>>> s.count("l")
2
6. 字符串的分离与拼接
方法 | 说明 |
---|---|
split(str=“”) | 以str为分隔符切片string,默认是空格 |
splitlines() | 以行/r为分隔符切片string,返回一个列表 |
join | 以什么为连接符将多个字符串拼接成一个字符串 |
(1)需求:判断ip地址的合法性
,将ip的每一位数字拿出,判断每位数字是否在0-255之间
ip ='17.25.254.100'
>>> ip.split('.')
['17', '25', '254', '100']
>>> items = ip.split('.')
>>> items
['17', '25', '254', '100']
(2)需求:将四个数字用‘ - ’拼接起来
ip ='17.25.254.100'
>>> ip.split('.')
['17', '25', '254', '100']
>>> items = ip.split('.')
>>> items
['17', '25', '254', '100']
>>> "-".join(items) #join拼接
'17-25-254-100'
7. 练习
str = input("请输入正确的IP地址: ")
num = str.split(".")
for i in num:
if i.isdigit() == True:
if i.startswith('0'):
print("Nerither")
break
else:
print("IPV4")
else:
print("ipv4地址格式错误")
8. string模块
例子: 随机生成验证码
需求:生成100个验证码:每个验证码由2个数字和2个字母组成
import random #从某一数字中拿出一个来randmon.randint();随机拿出多个:random.sample
import string
print("从数列里面随机拿出: " + string.digits)
print("从字母列表里面随机拿出: " + string.ascii_letters)
for i in range(0,100):
print(str(i) + "随机生成的字符串: " + "".join(random.sample(string.digits, 2)) + "".join(random.sample(string.ascii_letters, 4)))
#运行结果
从数列里面随机拿出: 0123456789
从字母列表里面随机拿出: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
1随机生成的字符串: 45lktg
2随机生成的字符串: 57zdrX
3随机生成的字符串:........
.......