鱼C论坛

 找回密码
 立即注册
查看: 805|回复: 5

r和三重引号并用

[复制链接]
发表于 2019-4-28 19:18:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# 密码安全性检查代码
#
# 低级密码要求:
#   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


问题:

symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
r和三重引号并用的意义是什么 去掉r之后程序还是正常运行了啊 没报错  验证几次也没发现什么问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-4-28 19:52:32 | 显示全部楼层
r 估计你知道它的用处,所以我这略过。
1、单引号       引字符串
2、三重引号    引字符串,在代码中可多行输入字符串

注意到没有,它们的区别仅仅是三重引号在编程的时候支持多行输入。没别的特殊的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-28 19:58:44 | 显示全部楼层
ba21 发表于 2019-4-28 19:52
r 估计你知道它的用处,所以我这略过。
1、单引号       引字符串
2、三重引号    引字符串,在代码中可 ...

我的问题是为什么要r和三重引号并用 把r去了似乎没影响啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-28 21:04:28 | 显示全部楼层
加油fighting 发表于 2019-4-28 19:58
我的问题是为什么要r和三重引号并用 把r去了似乎没影响啊



第1: 加r是使得字符串中的转义字符原样输出。
第2:单,3引号的使用和你说的明明白白。
第3: 既然知道 1 2的使用方法,那么,你加不加r再来多此一问不萨比吗?

r'123123' 和 '123123'       或   r'''123123''' 和 '''123123'''     有区别吗? 我觉得意思是一样。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-28 23:28:16 | 显示全部楼层
ba21 发表于 2019-4-28 21:04
如果说看了我的回复你还这样问。
那么我觉得你这问题问的很煞笔。

回答问题也没必要恶意攻击吧 编程本来就是要简洁  多加r我想应该是有用意的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-29 10:18:00 | 显示全部楼层
加油fighting 发表于 2019-4-28 23:28
回答问题也没必要恶意攻击吧 编程本来就是要简洁  多加r我想应该是有用意的

自己多做一些测试:

>>> s="\\\n\.\""
>>> print(s)
\
\."
>>> s=r"\\\n\.\""
>>> print(s)
\\\n\.\"
>>> s='''"\\\n\.\""'''
>>> print(s)
"\
\.""
>>> s=r'''"\\\n\.\""'''
>>> print(s)
"\\\n\.\""
>>> s='''"\'':":"';"\\n\.\""'''
>>> print(s)
"'':":"';"\n\.""
>>> s=r'''"\'':":"';"\\n\.\""'''
>>> print(s)
"\'':":"';"\\n\.\""

另:三引号可识别多行字符串
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-15 13:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表