各种内置方法

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)”和“回车符”(详见:http://bbs.fishc.com/thread-92997-1-1.html),因此并不会按照我们计划的路径去打开文件。
    Python 为我们铺好了解决的道路,只需要使用原始字符串操作符(R或r)即可:

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

动手题:
3. 请写一个密码安全性检查的代码代码:check.py


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

symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'

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 == 3 and flag_con == 3 and (passwd[0] in chars):
        print("高")
        print("请继续保持")
        break
    else:
        print("中")

    print("请按以下方式提升您的密码安全级别:\n\
    \t1. 密码必须由数字、字母及特殊字符三种组合\n\
    \t2. 密码只能由字母开头\n\
    \t3. 密码长度不能低于16位")
    break
  1. 为啥要用 while 1 呢?主要是为了实现“如果结果是低或中则打印如何提升密码安全级别的提示,而高则直接退出”

  2. 为啥把“高”放中间呢?因为其判断最为麻烦(注意还要求必须是字母开头),所以很有可能满足了“中”却因为额外的条件满足不了“高”,因此我们把事儿比较多的高放中间判断,满足不了“高”,那就只能是最后的 else“中”了。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值