小甲鱼python零基础014字符串

这篇博客主要介绍了Python中的字符串基础知识,包括定义多行字符串的两种方法、三引号字符串的用途、字符串路径处理、字符串切片以及字符串解密。还提供了一个密码安全性检查脚本的编写示例,并回顾了课堂上关于字符串内置方法、不同类型间转换的要点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、测试题

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

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

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

3. 有字符串:str1 = '<a href="http://www.fishc.com/dvd" target="_blank">鱼C资源打包</a>',请问如何提取出子字符串:'www.fishc.com'

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

>>> str1[-45:-32] 

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

>>> str1[20:-36]

6.据说只有智商高于150的鱼油才能解开这个字符串(还原为有意义的字符串):

str1 = 'i2sl54ovvvb4e3bferi32s56h;$c43.sfc67o0cm99'

二、动动手

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

需求:
   低级密码要求:
#   1. 密码由单纯的数字或字母组成
#   2. 密码长度小于等于8位

   中级密码要求:
#   1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
#   2. 密码长度不能低于8位

   高级密码要求:
#   1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
#   2. 密码只能由字母开头
#   3. 密码长度不能低于16位

1. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!


二、我的答案

一、

0. 

法一:
print('''逻辑操作符:not、and、or
优先级:
幂>正负号(一元)>算数>比较>逻辑''')

法二:
string=('逻辑操作符:not、and、or\n''优先级:\n''幂>正负号(一元)>算数>比较>逻辑\n')
print(string)

1. 用于多行跨行注释。

2. 因为file1 = open('C:\windows\temp\readme.txt', 'r')中\t和\r分别表示横向制表符(TAB)和回车符,详见:字符串格式化符号含义及转义字符含义。因此只需要使用原始字符串操作符(R或r)即可解决此问题。

file1 = open(r'C:\windows\temp\readme.txt', 'r')

3.

>>> str1[str1.find('www.fishc.com'):str1.find('/dvd')]                           #字符串的find方法
'www.fishc.com'

4. str1[-45] = w,str1[-32] = /。因此结果是:'www.fishc.com'

5. str1[20] = f, str1[-36] = . 。 因此结果是:'fishic'

6. str1[::3]即可。因为每隔3个字母就是密码。

二、

0.

numbers = '0123456789'
specail = '~!@#$%^&*()_=-/,.?<>;:[]{}|\\'
words = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
print('请设置您的密码:', end = ' ')
key = input()
while (key.isspace()) or (len(key) == 0):       #当输入为空格或者什么都不输入时,应给出提醒
    print('密码不能为空!')
    key = input('请重新输入:')

if len(key) <= 8:
    lenth_flag = 1
elif 8 < len(key) < 16:
    lenth_flag = 2
else:
    lenth_flag = 3                              #长度标记:小于等于8表示初级(1等),大于8小于16表示中级(2等),大于等于16表示高级(3等)

key_flag = 0                                    #初始化所包含的密码字类型

#检测是否包含数字
for i in key:                                   #这个语句很重要:之前学到的for循环是这样的:for i in range(0,4)。这里i会每次检索key中的索引,并取出相应的元素
    if i in numbers:
        key_flag += 1     
        break                                   #只要有一个数字就立马跳出

#检测是否包含字母
for i in key:
    if i in words:
        key_flag += 1
        break

#检测是否包含特殊字符
for i in key:
    if i in specail:
        key_flag += 1
        break

while 1:                                        #检测部分
    if ((lenth_flag == 3) and (key_flag == 3)) and (key[0] in words):           #字母开头这个条件很容易忽视,如果是高级密码,则不需要改进,直接跳出循环即可。
        print("您的密码等级为:高级。请继续保持!")
        break
    elif (lenth_flag == 1) and (key_flag == 1):  #此处用or不用and:原因在于,假设输入密码为123gh,不足8位,数字字母混合,则会判为中级,实际上是低级密码。
        print("您的密码等级为:低级。仍需努力!")
    else:
        print("您的密码等级为:中级。仍需努力!")
    print('''推荐您使用以下方法来提高您的密码安全等级:
            密码采用数字、字母及特殊字符三种组合
            密码由字母开头
            密码长度大于16位'''
          )
    key = input("请重置您的密码:")             #低级和中级密码都需要给出改进的意见,在循环体内给出可重新输入的语句。
    break                                       #当用户做完密码的修改后,记得及时跳出检测循环。

第二种方法:

代码二:
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].isalnum():
                level = "高"
        print("您的密码安全等级评定为:%s"%level)
        if level == "高":
                print("请继续保持")
        else:
                print("""请按以下方式提升您的密码安全级别:
        1.密码必须由数字、字母及特殊字符三种组合
        2.密码只能由字母开头
        3.密码长度不能低于16位""")
        t = input("还要再测试么?(”y“继续,其他退出)")

1.课堂重点:

#list 转tuple

一、利用tuple()内置函数:

>>> list1 = ['1', '2', 'abc', 3]
>>> tuple1 = tuple(list1)
>>> print(tuple1)
('1', '2', 'abc', 3)

二、利用索引和拼接手动添加:

tuple1 = ()
for i in list1:
    tuple2 += (i,)

print(tuple2)

('1', '2', 'abc', 3)

 

#tuple转list

一、通过list()内置函数:

>>> tuple1 = (1, 2, 'ok', '好的', '78')
>>> list1 = list(tuple1)
>>> print(list1)
[1, 2, 'ok', '好的', '78']

二、利用list的内置方法append()手动添加:
list2 = []
for i in tuple2:
    list2.append(i)
print(list2)

[1, 2, 'ok', '好的', '78']

#tuple转str

a = ('hello', 'world', 'python')
b = ' '.join(a)
print(type(b))
print(b)
输出:
<class 'str'>
hello world python

# str转tuple

一、 通过tuple()内置函数:
str1 = 'hello world'
print(tuple(str1))
二、通过拼接的方法手动转换:
tuple1 = ()
for i in str1:
    tuple1 = tuple1[:] + (i,)
print(tuple1)
输出:
('h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd')
('h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd')

# list转str
list1 = ['hello', 'world']
str1 = ' '.join(list1)
print(type(str1))
print(str1)
输出:
<class 'str'>
hello world

# str转list

一、通过list()内置函数:
str1 = 'hello world'
print(list(str1))
print(list(str1.split(' ')))
二、通过append()内置方法手动转换:
list1 = []
for i in str1:
    list1.append(i)
print(list1)
输出:
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
['hello', 'world']
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']


三、参考答案:https://www.jianshu.com/p/ae903027f184

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值