【五】Python

字符串

'''
python:数据类型
数据类型:
str
list列表
dict字典
set集合

函数:
定义
调用
参数
作用域
闭包
装饰器

'''

# 字符串: 

# s1 = 'abc' 
# s2 = "abc"
# s3 ='''abc'''
# print(id(s1),id(s2),id(s3))  # '''三引号占用的内存空间与单双引号的不同(前提:'''的内容不在一行上)

# print(s1 == s2)  # 比较的是内容
# print(s1 is s2)  # 比较的是地址

# print(s2 ==s3)
# print(s2 is s3)

# print(s2)
# print(s3)


# s1 = input('请输入:')  # 'abc'
# s2 = input('请输入:')  # 'abc'

# print(s1 == s2)  # True  
# print(s1 is s2)  # False   
# (常量赋值is是True,input输入底层做了处理所以最后的地址是不一样的)


# 字符串的运算符: + *

# s3 = s1+s2  # + 相当于拼接符

# s4 = s1 * 5  # 倍数

# print(s3)

# print(s4)

# in 在...里面

name ='steven'

result = 'eve' in name   # 返回值是布尔类型 True False
print(result)

# not in  没有在...里面


result = 'tv' not in name   # 返回值是布尔类型 True False
print(result)


# % 字符串的格式化

print('%s说:%s' % (name,'大家好好学习!'))

# r 保留原格式  有r 则不发生转义  没有r则发生转义(例如:\')

print(r'%s说: \'哈哈哈!\' ' % name)


# []  [start:end]

filename = 'picture.png'

# 位置都是从0开始,位置也会称作下标或者索引
print(filename[5])  # 通过[] 可以结合位置 获取字母  特点: 只能获取一个字母


# range(1,10)  --类似--> [1:10]

print(filename[0:7])  # 包前不包后

print(filename[3:7])  # 截取字符串

# 省略
print(filename[3:])  # 只要省略的是后面的,表示一直取到字符串的末尾
print(filename[:7])  # 只要省略的是前面的,表示从0开始取值

# 负数
print(filename[8:-1])

print(filename[:-2])

print(filename[-1:])

print(filename[-5:-1])

print(filename[10:0])


# [::-1]  倒叙
# str1=‘abcdefg’
print(filename[::-1])

str1 ='abcdefg'

print(str1[-1:-5:-1])  # gfed

print(str1[5:0:-1])  # 逆向取值

print('---->',str1[5:0:1])# 空的,没有取到值 

print(str1[::-1])


'''
 str[start:end:方向和步长]
 方向:  1  表示从左向右 0,1,2,3,4,5。。。
       -1  表示从右向左  

      注意数值的顺序  
      比如:  正向: 5:0 就不行了
            反向:  5:0  就可以取到值

 Python 字符串直接在方括号([])中使用索引即可获取对应的字符,
 字符串中第一个字符的索引为 0、第二个字符的索引为 1,后面各字符依此类推。
 此外,Python 也允许从后面开始计算索引,最后一个字符的索引为 -1,
 倒数第二个字符的索引为 -2······依此类推。

'''

# 练习: hello world
# 逆序输出world: ---> dlrow
# 正向输出hello
# 逆序输出整个hello world
# 打印获取oll
# 打印llo wo


s1 = 'hello world'

print(s1[-1:-6:-1])

print(s1[:5])

print(s1[::-1])

print(s1[4:1:-1])

print(s1[2:-3])  # s1[2:8]


# 
print(s1[::-2])


s2 = '你好呀哈哈哈'
print(s2[1:3])

字符串的内建函数

# 字符串的内建函数: 声明一个字符串,默认可以调用内建函数(系统准备好的一些函数)

# 第一部分: 大小写相关的
# capitalize()  title() istitle()   upper()  isupper()   lower()  islower()

message = 'zhaorui is a beautiful girl!'

msg = message.capitalize()   # 将字符串的第一个字符串转成大写的标识形式
print(msg)


msg = message.title()  # 返回的是 每个单词的首字母大写的字符串
print(msg)

result = message.istitle() # 返回的结果是布尔类型的,True False
print(result)


msg = message.upper()  # 将字符串全部转成大写的表示形式
print(msg)

result = msg.lower()  # 将大写全部转小写
print(result)

# 案例:验证码案例

s='QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm0987654321'

print(len(s))  # 求字符串长度 len(str),返回值是一个整型的数值

# 四个随机数
code =''

import random

# # IndexError: string index out of range   s = 'abc'  print(s[3])
# # index: 0~len(s)-1    0~61
# 产生四位验证码
for i in range(4):

	ran = random.randint(0,len(s)-1)  # 获取随机数

	code += s[ran]   # code = code + ‘V’   ---》code='V' 不断拼接到code上

print('验证码:'+code)

# 提示用户输入验证码

user_input = input('请输入验证码:')

if user_input.lower() == code.lower():
	print('验证码输入正确!')
else:
	print('验证码错误!')

str其他函数

# 查找相关的,替换

# find()   rfind()  lfind()   index()  rindex()  lindex()   replace()

s1 = 'index lucy lucky goods'

result = 'R' in s1
print(result)


position = s1.find('R')  # 返回值是-1则代表没有找到
print(position)

position = s1.find('l')  # 如果可以找到则返回字母第一次出现的位置
print(position)

# find('要查找的字符',start,end)
p = s1.find('o',position+1,len(s1)-5)  # 也可以指定开始位置查找
print(p)


# https://www.baidu.com/img/bd_logo1.png

url= 'https://www.baidu.com/img/bd_logo1.png'

p = url.rfind('/')  # right find  从右侧检索/的位置
print(p)

filename = url[p+1:]
print(filename)

p = url.rfind('.')

kz= url[p+1:]
print(kz)

'''
index(str, beg=0, end=len(string))
跟find()方法一样,只不过如果str不在字符串中会报一个异常

p = 'hello'.index('x')

print(p)

ValueError: substring not found

'''

# 替换

s1 = 'index lucy lucky goods'

# replace(old,new,[max])
s2 = s1.replace(' ','#')
print(s2)

s2 = s1.replace(' ','',2)
print(s2)

 encode decode startwith endwith

#字符串内建函数: encode  编码      decode  解码

# 编码:  网络应用  (中文一般会涉及编码问题)

msg = '上课啦!认真听课!'  # 中文的

'''
https://www.baidu.com/s?wd=%E4%BB%8A%E6%97%A5%E6%96%B0%E9%B2%9C%E4%BA%8B&tn=SE_PclogoS_8whnvm25&sa=ire_dl_gh_logo&rsv_dl=igh_logo_pcs

'''
# gbk 中文   gb2312 简体中文  unicode

result = msg.encode('utf-8')

print(result)  # 

# 解码
m = result.decode('utf-8')
print(m)



# 字符串内建函数: startswith()   endswith()  返回值都是布尔类型True False

# startswith判断是否是以xxx开头的,或者 endswith判断是否是以xxx结尾的

# 应用: 文件上传  只能上传图片(jpg,png,bmp,gif)

filename = '笔记.doc'

result= filename.endswith('doc')  # filename是否是以txt结尾的

print(result)


s = 'hello'

result = s.startswith('he')
print(result)


# 文件上传  只能上传图片(jpg,png,bmp,gif)

# path = input('请选择文件:')  # C:\foo\bar\desk_background.jpg

# # 分析: 要上传的文件的路径path----》文件名-----》通过文件名再判断是否是图片类型
# p = path.rfind('\\')

# filename = path[p+1:]  # 通过切片截取出来文件名

# # 判断是否是图片类型?

# if filename.endswith('jpg') or filename.endswith('png') or filename.endswith('bmp'):
# 	print('是图片允许上传!')
# else:
# 	print('不是图片格式,只能上传图片!')

'''
练习:
 给定一个路径,上传文件(记事本txt或者是图片jpg,png)
 如果不是对应格式的,允许重新指定上传文件,
 如果符合上传的规定则提示上传成功

'''

# \n  \r  \'  \"  \t  \\ 
# 
print(r'aksj\kalsf')


while True:
	path = input('请选择文件:')  # C:\foo\bar\desk_background.jpg

	# 分析: 要上传的文件的路径path----》文件名-----》通过文件名再判断是否是图片类型
	p = path.rfind('\\')

	filename = path[p+1:]  # 通过切片截取出来文件名

	# 判断是否是图片类型?

	if filename.endswith('jpg') or filename.endswith('png') or filename.endswith('txt'):
		print('允许上传!上传成功!')
		break
	else:
		print('不是图片格式和记事本格式,上传错误!')

join isalpha isdigit lstrip rstrip split

# isalpha() 是否是字母   isdigit() 是否是数字

s ='abcd'
result = s.isalpha()
print("result=",result)

s='6688'

result = s.isdigit()
print(result)

# sum = 0 
# for i in range(3): # 0,1,2
# 	num = input('请输入数字:')  # ll

# 	if num.isdigit():
# 		num = int(num)

# 		sum+=num

# print('sum=',sum)

sum = 0 
i = 1

# while i<=3:
# 	num = input('请输入数字:')

# 	if num.isdigit():
# 		num = int(num)
# 		sum+=num
# 		print('第{}个数字数字累加成功!'.format(i))
# 		i+=1
# 	else:
# 		print('不是数字!')

# print('sum=',sum)


# join() : '-'.join('abc')   将abc用-连接构成一个新的字符串

new_str = '-'.join('abc')
print(new_str)


# python 列表  list =['a','v','o','9']   数组
list1 =['a','v','o','9']
result = ''.join(list1)   # 
print(result)

result = ' '.join(list1) 
print(type(result))



# lstrip    rstrip  strip 

s ='   hello    '

# s= s.lstrip()  # 去除字符串左侧的空格
# print(s+'8')

# s = s.rstrip()  # 去除右侧的空格
# print(s+'8')

s = s.strip()
print(s+'8')



# split(‘分隔符’,次数)  分割字符串,将分割后的字符串保存到列表中

s ='hello world hello kitty'

result = s.split(' ',2)  # 表示按照空格作为分隔符,分割字符串2次
print(result)


n = s.count(' ')  # count(args)  求字符串中指定args的个数
print('个数:',n)


# s='hfdsjkhfdf;lksd;fk'
# s.count('s')

'''
总结:
大小写: lower()  upper()
查找: find()   rfind()
替换: replace()
分割: split()
连接: join()
编码: encode()  decode()的使用
个数: count()
去除空格:  strip()   lstrip()  rstrip() 
用于判断的:
startswith()   开头判断
endswith()     结尾判断
isalpha()      字母判断
isdigit()      数字判断

'''

print('用户名\t密码\t邮箱')

 

posted @ 2023-09-19 16:11  しみずよしだ  阅读(14)  评论(0)    收藏  举报