入门学习-Python-小甲鱼学习资料-Day014-字符串:各种奇葩的内置方法

根据视频自己练习 :

capitalize() 把字符串的第一个字符改为大写
casefold() 把整个字符串的所有字符改为小写
center(width) 将字符串居中,并使用空格填充至长度 width 的新字符串
count(sub[, start[, end]]) 返回 sub 在字符串里边出现的次数,start 和 end 参数表示范围,可选。
encode(encoding=‘utf-8’, errors=‘strict’) 以 encoding 指定的编码格式对字符串进行编码。
endswith(sub[, start[, end]]) 检查字符串是否以 sub 子字符串结束,如果是返回 True,否则返回 False。start 和 end 参数表示范围,可选。
expandtabs([tabsize=8]) 把字符串中的 tab 符号(\t)转换为空格,如不指定参数,默认的空格数是 tabsize=8。
find(sub[, start[, end]]) 检测 sub 是否包含在字符串中,如果有则返回索引值,否则返回 -1,start 和 end 参数表示范围,可选。
index(sub[, start[, end]]) 跟 find 方法一样,不过如果 sub 不在 string 中会产生一个异常。
isalnum() 如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False。
isalpha() 如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False。
isdecimal() 如果字符串只包含十进制数字则返回 True,否则返回 False。
isdigit() 如果字符串只包含数字则返回 True,否则返回 False。
islower() 如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回 True,否则返回 False。
isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False。
isspace() 如果字符串中只包含空格,则返回 True,否则返回 False。
istitle() 如果字符串是标题化(所有的单词都是以大写开始,其余字母均小写),则返回 True,否则返回 False。
isupper() 如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回 True,否则返回 False。
join(sub) 以字符串作为分隔符,插入到 sub 中所有的字符之间。
ljust(width) 返回一个左对齐的字符串,并使用空格填充至长度为 width 的新字符串。
lower() 转换字符串中所有大写字符为小写。
lstrip() 去掉字符串左边的所有空格
partition(sub) 找到子字符串 sub,把字符串分成一个 3 元组 (pre_sub, sub, fol_sub),如果字符串中不包含 sub 则返回 (‘原字符串’, ‘’, ‘’)
replace(old, new[, count]) 把字符串中的 old 子字符串替换成 new 子字符串,如果 count 指定,则替换不超过 count 次。
rfind(sub[, start[, end]]) 类似于 find() 方法,不过是从右边开始查找。
rindex(sub[, start[, end]]) 类似于 index() 方法,不过是从右边开始。
rjust(width) 返回一个右对齐的字符串,并使用空格填充至长度为 width 的新字符串。
rpartition(sub) 类似于 partition() 方法,不过是从右边开始查找。
rstrip() 删除字符串末尾的空格。
split(sep=None, maxsplit=-1) 不带参数默认是以空格为分隔符切片字符串,如果 maxsplit 参数有设置,则仅分隔 maxsplit 个子字符串,返回切片后的子字符串拼接的列表。
splitlines(([keepends])) 在输出结果里是否去掉换行符,默认为 False,不包含换行符;如果为 True,则保留换行符。。
startswith(prefix[, start[, end]]) 检查字符串是否以 prefix 开头,是则返回 True,否则返回 False。start 和 end 参数可以指定范围检查,可选。
strip([chars]) 删除字符串前边和后边所有的空格,chars 参数可以定制删除的字符,可选。
swapcase() 翻转字符串中的大小写。
title() 返回标题化(所有的单词都是以大写开始,其余字母均小写)的字符串。
translate(table) 根据 table 的规则(可以由 str.maketrans(‘a’, ‘b’) 定制)转换字符串中的字符。
upper() 转换字符串中的所有小写字符为大写。
zfill(width) 返回长度为 width 的字符串,原字符串右对齐,前边用 0 填充。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

课后练习题

0.还记得如何定义一个跨越多行的字符串吗(请至少写出两种实现的方法)?
方法一:
str1 = ‘’‘待我长发及腰,将军归来可好?
此身君子意逍遥,怎料山河萧萧。
天光乍破遇,暮雪白头老。
寒剑默听奔雷,长枪独守空壕。
醉卧沙场君莫笑,一夜吹彻画角。
江南晚来客,红绳结发梢。’’’

方法二:
str2 = ‘待卿长发及腰,我必凯旋回朝。
昔日纵马任逍遥,俱是少年英豪。
东都霞色好,西湖烟波渺。
执枪血战八方,誓守山河多娇。
应有得胜归来日,与卿共度良宵。
盼携手终老,愿与子同袍。’

方法三:
str3 = (‘待卿长发及腰,我必凯旋回朝。’
‘昔日纵马任逍遥,俱是少年英豪。’
‘东都霞色好,西湖烟波渺。’
‘执枪血战八方,誓守山河多娇。’
‘应有得胜归来日,与卿共度良宵。’
‘盼携手终老,愿与子同袍。’)

  1. 三引号字符串通常我们用于做什么使用?
    三引号字符串不赋值的情况下,通常当作跨行注释使用 。

  2. file1 = open(’ C: \windows\temp\readme. txt’ , ’ r’ ) 表示以只读方式打开“C: \windows\temp\readme. txt”这个文本文件,但事实上是错,知道为什么吗?你会如何修改?
    会报错是因为在字符串中,我们约定“\t”和“\r”分别表示“横向制表符(TAB)”和“回车符”,因此并不会按照我们计划的路径去打开文件。
    Python 为我们铺好了解决的道路,只需要使用原始字符串操作符(R或r)即可:
    file1=open(r’C:\windows\temp\readme.txt’,‘r’)

  3. 有字符串:str1 = ’ 鱼C资源打包’,请问如何提取出子字符串
    str1[16:38]

  4. 如果使用负数作为索引值进行分片操作,按照第三题的要求你能够正确目测出结果吗?
    str1[-45:-32]

  5. 还是第三题那个字符串,请问下边语句会显示什么内容?str1[20:-36]
    ‘fishc’

  6. 据说只有智商高于150的鱼油才能解开这个字符串(还原为有意义的字符串):str1 =‘i2sl54ovvvb4e3bferi32s56h;$c43.sfc67o0cm99’
    str1[::3] @@@@@@

动动手
0. 请写一个密码安全性检查的脚本代码:check.py
在这里插入图片描述
在这里插入图片描述

程序演示:

自己写的错误代码: 混成一片进行判断
while True:
temp = input(‘输入密码’)
# a = int(temp)
b=len(temp)
c =’’‘提升密码等级的方式:
1.密码必须由数字、字母及特殊字符三种组合
2.密码只能由字母开头
3.密码长度不能低于16位’’’
d = ‘~!@#KaTeX parse error: Expected 'EOF', got '#' at position 403: … d的初始定义子串 '~!@#̲%^&*()_=-/,.?<>;:[]{}|’ 的时候 才能跳转到 高级密码的分支 。

方法一:
str1 = “~!@#$%^&*()_=-/,.?<>;:[]{}|”
has_str1 = 0
has_num = 0
has_alpha = 0
t = ‘y’
while t == ‘y’:
password = input(“请输入需要检查的密码组合:”)
length = len(password)
while(password.isspace() or length == 0):
password = input(‘您输入的密码为空(或空格),请重新输入:’)
for i in password:
if i in str1:
has_str1 = 1
if i.isdigit():
has_num = 1
if i.isalpha():
has_alpha = 1
has = has_str1 + has_num + has_alpha
if length <= 8 or password.isalnum():
level = “低”
if length > 8 and has ==2:
level = “中”
if length >= 16 and has == 3 and password[0].isalpha():
level = “高”
print(“您的密码安全等级评定为:%s”%level)
if level == “高”:
print(“请继续保持”)
else:
print(""“请按以下方式提升您的密码安全级别:
1.密码必须由数字、字母及特殊字符三种组合
2.密码只能由字母开头
3.密码长度不能低于16位”"")
t = input(“还要再测试么?(”y“继续,其他退出)”)
注意:特殊的数字开头的高级密码没有判断

方法二:
symbols = “~!@#$%^&*()_=-/,.?<>;:[]{}|”
chars = ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’
nums = ‘0123456789’
t = ‘y’
while t == ‘y’:
passwd = input(‘请输入密码:’)
length = len(passwd)
#判断长度
while(passwd.isspace() or length == 0):
passwd = input(‘您输入的密码为空(或空格),请重新输入:’)
length = len(passwd)
if length <= 8:
flag_len = 1
elif 8 < length <16:
flag_len = 2
else:
flag_len = 3
flag_con = 0
#判断是否包含特殊字符
for each in passwd:
if each in symbols:
flag_con +=1
break
#判断是否包含字母
for each in passwd:
if each in chars:
flag_con += 1
break
#判断是否包含数字
for each in passwd:
if each in nums:
flag_con += 1
break
#打印结果
while 1:
print(“您的密码安全级别评定为:”,end=’’)
if flag_len == 1 or flag_con == 1:
print(“低”)
elif flag_len == 2 or flag_con == 2:
print(“中”)
else:
print(“高”)
print(“请继续保持”)
break
print(""“请按以下方式提升您的密码安全级别:
1.密码必须由数字、字母及特殊字符三种组合
2.密码只能由字母开头
3.密码长度不能低于16位”"")
break
t = input(“还要再测试么?(”y“继续,其他退出)”)
注意:判断高级密码没有条件 其他类型都是高级

方法三:
str0 = “”“请按以下方式提升您的密码安全级别:
1.必须由数字、字母及特殊字符三种组合(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|)
2.密码只能由字母开头
3.密码长度不能低于16位”""

str1 = ‘您的密码安全级别评定为:低\n’ + str0 + “”"
4.替王尼玛给隔壁老王送上一把水果刀
5.告诉你的孩子,他是充话费下送的
6.召集另外三只小甲鱼,喂他们突变剂,救纽约人民于水火
“”"
str2 = ‘您的密码安全级别评定为:中\n’ + str0 + “”"
4.扶老奶奶过马路,帮室友补袜子
“”"
str3 = ‘您的密码安全评定为:高\n请继续保持!’

special = “~!@#$%^&*()_=-/,.?<>;:[]{}|”
letter = ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’
number = ‘0123456789’
t = ‘y’

while t == ‘y’:
password = input(“请输入需要检查的密码组合:”)

# 用num来统计字符类型出现次数  
num = 0
a = b = c = 0
# 输入的不能为空  
while password == '':
    password = input("不能为空,请重新输入:")
    # 计算num的值,如果输入的全部是字符,那么num=0,所以才会有<=1  
if password.isnumeric() or password.isalpha():
    num = 1
else:
    for i in password:
        if a == 0 and i in special:
            num += 1
            a = 1
        elif b == 0 and i in number:
            num += 1
            b = 1
        elif c == 0 and i in letter:
            num += 1
            c = 1
if password[0] in letter and num == 3 and len(password) >= 16:
    print(str3)
elif num >= 2 and len(password) >= 8:
    print(str2)
elif num <= 1 and len(password) < 8:
    print(str1)
t = input("还要再测试么?(”y“继续,其他退出)")  

密码输入约束程序 小甲鱼的程序运行效果和自己理解不同 只好自己重新写了

基础环境定义
mynumbers = ‘0123456789’
mychars = ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’
myysymbols = ‘~!@#$%^&*()_=-/,.?<>;:[]{}|’
passwordstatus = 0
myinput =’’
myout = ‘y’
passwordrule =’’‘1、 不合格密码:
密码小于8位
全为数字
全为字母
2、 低级密码
密码 8到15位
不全为数字
不全为字母
3、 高级密码
密码大于等于16位
不全为数字
不全为字母
包含特殊字符 ‘’’

print(passwordrule)
print()

while myout == ‘y’:
print(“请输入密码”)
myinput = input()
passlen = len(myinput)
if passlen<8 :
print(“不合格密码,请重新输入”)

elif ( myinput.isalpha() or myinput.isdigit() or myinput.isspace()):
    print("低级密码")
elif 8<=passlen<16 :
    print("中级密码")
elif passlen >=16 :
    print("高级密码")
print("要继续吗? , 小写 'y'继续 ,其他退出")
print()
myout = input()

猜你喜欢

转载自blog.csdn.net/seven1levin/article/details/86062399
今日推荐