第014讲:字符串:各种奇葩的内置方法

第014讲:字符串:各种奇葩的内置方法


测试题:

0. 还记得如何定义一个跨越多行的字符串吗(请至少写出两种实现的方法)?

# 如果是打印的字符串要跨越多行
#第一种
>>> print('你好世界\n你好世界')
'你好世界'
'你好世界'
#第二种
>>> print('''你好世界
你好世界
你好世界''')
'你好世界'
'你好世界'
'你好世界'

# 如果是变量的字符串赋值要跨越多行
# 第一种
>>> print('''你好世界
你好世界
你好世界''')
'你好世界'
'你好世界'
'你好世界'
# 第二种
>>> print('你好世界\
    你好世界\
    你好世界')
# 第三种
>>> print('你好世界'
'你好世界'
'你好世界')

1. 三引号字符串通常我们用于做什么使用?

# 三引号字符串如果不做赋值,那么用于跨行注释使用
'''
这是注释
'''

2. file1 = open('C:\windows\temp\readme.txt', 'r') 表示以只读方式打开“C:\windows\temp\readme.txt”这个文本文件,但事实上这个语句会报错,知道为什么吗?你会如何修改?

# python中,反斜杠 \ 是转义符,\t是横向制表符,\r是回车符,所以这样写Python会判断错误
# 正确写法:
file1 = (r'c:\windows\temp\reamde.txt','r')
# 这里用到 原始操作符 r

3. 有字符串:str1 = '鱼C资源打包',请问如何提取出子字符串:'www.fishc.com'

str1 = '<a href="http://www.fishc.com/dvd" target="_blank">鱼C资源打包</a>'
str2 = str1[16:29] # 找到字符串中对应的序列
print(str2)

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

str1 = '<a href="http://www.fishc.com/dvd" target="_blank">鱼C资源打包</a>'
str2 = str1[-45:-32]
print(str2)

5. 还是第三题那个字符串,请问下边语句会显示什么内容?

>>> str1[20:-36]
fishc

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

print(str1[::3]) # 打印时步进3个打印

动动手:

0. 请写一个密码安全性检查的代码代码:check.py

# 密码安全性检查代码
#
# 低级密码要求:
#   1. 密码由单纯的数字或字母组成
#   2. 密码长度小于等于8位
#
# 中级密码要求:
#   1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
#   2. 密码长度不能低于8位
#
# 高级密码要求:
#   1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
#   2. 密码只能由字母开头
#   3. 密码长度不能低于16位

number = '1234567890'
letter_a = 'abcdefghijklmnopqrstuvwxyz'
letter_A = letter_a.swapcase()
letter = letter_a+letter_A
symbol = r'''~!@#$%^&*()_=-/,.?<>;:[]{}\|'''  # 注意这里特殊字符的排列和题目的排列,主重点是反斜杠 \

passwd = input('请输入需要检查的密码组合:')

passwd_len = len(passwd)

while (passwd.isspace() or passwd_len == 0):
    passwd = input('您输入的密码为空或者空格,请重新输入:')
    passwd_len = len(passwd)

if passwd_len <= 8:
    lens = 1
elif 8<passwd_len<16:
    lens = 2
else:
    lens = 3

con = 0

# 是否包含数字
for passwd_i in passwd:
    if passwd_i in number:
        con += 1
        break

# 是否包含字母
for passwd_i in passwd:
    if passwd_i in letter:
        con += 1
        break

# 是否包含特殊字符
for passwd_i in passwd:
    if passwd_i in symbol:
        con += 1
        break

while 1:
    str1 = '您的密码安全级别评定为:'
    str2 = '''\n请按以下方式提升您的密码安全级别:
    \t1.密码必须由数字、字母及特殊字符三种组合
    \t2.密码只能由字母开头
    \t3.密码长度不能低于16位'''
    str3 = '请继续保持'
    if lens == 1 or con == 1:
        print(str1,'低级密码\n',str2)
    elif lens == 3 and con ==3 and passwd[0] in letter:
        print(str1,'高级密码\n',str3)
    else:
        print(str1,'中级密码\n',str2)
    break
posted @ 2021-05-24 20:16  田二爷  阅读(121)  评论(0编辑  收藏  举报