1.字符串
1.1字符串的输入输出
输入:input()---->所有input()输入的都是字符串类型
输出:print()
'''
字符串
'''
s1 = 'hello'
s2 = s1
s3 = 'hello'
s4 = 'hello1'
print(s1, s2, s3)
print(id(s1)) # id():获取内存地址
print(id(s2))
print(id(s3))
print(id(s4))
print(s1 is s2) # is:比较的是内存地址,结果是bool类型
print(s1 is s4)
'''
小练习--->字母和数字的组合(下标),随机产生验证码
'''
import random
filename = ''
s = 'QHUJFUHSKHhfkhhuihja1234487685'
for i in range(4):
index = random.randint(0, len(s) - 1)#随机产生下标
filename += s[index]#获取下标匹配的字母
print(filename)
1.2字符串的切片
1.2.1 字符串索引机制: 1.0~len(s)-1
2.-len(s)~-1
例如:例如: A B C D E F
index:0 1 2 3 4 5 ----->从前往后
-6 -5 -4 -3 -2 -1 ----->从后往前
'''
字符串的获取
'''
# s1='https://www.bilibili.com/video/BV1R7411F7JV?p=31&spm_id_from=pageDriver&vd_source=b48454820a3fd825265eef66d6df4c82'
s1 = 'ABCDEF'
print(s1[4]) # E
print(s1[0]) # A
print(s1[-1]) # F
print(s1[-1], s1[-5]) # F B
print(len(s1)) # 6,通过len(s)可以获取字符串的长度
1.2.2 切片:
格式:字符串变量[start:end]---->结果:包含start,不包含end
字符串变量[start:end:step]---->step:1.步长,2.方向: step 正数 从右向左
'''
切片
'''
s = 'ABCDEFG'
print(s[1:4]) # BCD
print(s[:5]) # 默认从零开始 ABCDE
print(s[-3:7]) # 两套规则可以交叉使用
print(s[-3:])
x = s[:]
print(x)
print(s)
print(id(x))
print(id(s)) # 内容一样,地址也一样
# 取中间值
print(s[1:-1])
print(s[:7:2]) # ACEG
print(s[1::2])
# step:1.步长,2.方向: step 正数 从右向左
print(s[::4]) # AE
print(s[-3::-4]) # EA
print(s[0:6:-2]) # 无值
print(s[6:0:-2]) # GECA
1.3字符串的常见操作
获取长度:len()
查找内容:find(),index(),rfind(),rindex()
判断:startswith(),endswith(),isalpha(),isdigit(),isalnum,isspace(),isupper(),islower()
计算出现次数:count()
替换内容:replace()
切割字符串:split(),rsplit(),splitlines(),partition(),rpartition()
修改大小写:capitalize(),title(),upper(),lower()
空格处理:ljust(),rjust(),center(),lstrip(),rstrip(),strip()
字符串拼接:join()
(1).获取长度:len()
s='https://www.bilibili.com/video/BV1R7411F7JV?p=32&spm_id_from=pageDriver&vd_source=b48454820a3fd825265eef66d6df4c82'
print(len(s))#获取字符串的长度
(2).查找
find():从左往右查找,遇到符合要求的返回位置,没有找到返回-1
rfind():从右往左找,遇到符合要求的返回位置,没有找到返回-1
index():从左往右查找。
index()与find()区别:index()没有找到会报错,find()没有找到返回-1
'''查找--->find ,index,rfind,lfind'''
path = 'https://www.bilibili.com/video/BV1R7411F7JV?p=32&spm_id_from=pageDriver&vd_source=b48454820a3fd825265eef66d6df4c82.gif'
i = path.find('_') # 查找'_'的位置
i1=path.find('video')#查找多个字符,返回第一个字符的位置
print(i)
print(i1)
n = path[i + 1:] # 第一个_后面所有内容
print(n)
print('----')
n1 = path.rfind('.') # 从右往左找
print(path[n1:])
n2 = path.index('.')
print(path[n2:])
(3).判断:返回值都是布尔类型
startswith():判断是否以xxx开头,是返回True,不是返回False
endswith():判断是否以xxx结尾,是返回True,不是返回False
'''
startswith,endswith介绍
'''
s = 'fdsgrgjoigUIHVnkhgyiif.2656.gif'
result1 = s.startswith('fds') # 判断是否以xxx开头,是返回True,不是返回False
result2 = s.endswith('gif') # 判断是否以xxx结尾,是返回True,不是返回False
print(result1)
print(result2)
'''
startswith,endswith对应小练习
模拟文件上传,键盘输入上传文件的名称,判断文件名是否大于6位以上,扩展名是否是:.jpg,gif,png格式
如果不是则提示上传失败,如果名字不满足条件,而扩展名满足条件则随机生成一个6位数字组成的文件名,打印成功上传xxxx.png
'''
1.
import random
name = input('输入图片文件名称:')
# 判断扩展名
if name.endswith('gif') or name.endswith('jpg') or name.endswith('png'):
# 判断文件名字
n = name.rfind('.')
file = name[:n] # 切片
if len(file) < 6:
# 随机生成名字
filename = ''
s = 'QHUJFUHSKHhfkhhuihja1234487685'
for i in range(5):
index = random.randint(0, len(s) - 1) # 随机产生下标
filename += s[index] # 获取下标匹配的字母
name = filename + name[n:]
print('成功上传%s文件' % name)
else:
print('文件格式错误!上传失败')
isalpha():判断全部由字母组成
isdigit():判断全部由数字组成
isalnum():判断全部由字母,数字组成
isspace():判断是否是空白字符串
isupper():判断是否为大写字母
islower():判断是否为小写字母
'''
isalpha,isdigit,isalnum,isspace,isupper,islower
'''
s = 'HELLO'
result = s.isalpha() # 判断是否由字母组成
result1 = s.isupper() # 判断是否为大写字母
result2 = s.islower() # 判断是否为小写字母
print(result1)
print(result2)
print(result)
s = '100sc'
result = s.isdigit() # 判断全部由数字组成
result1 = s.isalnum() # 判断全部由字母,数字组成
print(result)
print(result1)
s = ' '
print(s.isspace()) # 判断是否是空白字符串
'''
isalpha,isdigit,isalnum,isspace,isupper,islower对应小练习---->登录
用户名或者手机号码+密码登录
用户名(admin):全部小写,首字母不能是数字,长度必须是6位以上
手机号码(12345678912):纯数字 长度11
密码(123456):必须是六位数字
以上符合条件则进入下层验证:
判断用户名+密码是否正确---->成功,失败
'''
flag = True
while flag:
name = input('用户名/手机号:')
# 判断
if (name.islower() and name[0].isalpha() and l