Jerry~Mouse 发表于 2021-8-18 23:18:52

课后习题问题

高级密码要求:
#   1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
为啥编程的时候变成了
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
总结一下我的问题
~!@#$%^&*()_=-/,.?<>;:[]{}|\    这一串东西和   symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''    这一串东西相等吗

白two 发表于 2021-8-18 23:37:14

不相等,很多字符不一样

m = r'''~!@#$%^&*()_=-/,.?<>;:[]{}\|'''
n = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
h = []
for i in n:
    if i not in m:
      h.append(i)
for i in m:
    if i not in n:
      h.append(i)
print(h)


运行结果如下,列表里面的都是俩字符串中不同的东西:

['`', '+', "'", '"', '~']

Jerry~Mouse 发表于 2021-8-18 23:55:19

白two 发表于 2021-8-18 23:37
不相等,很多字符不一样




那这个r''''''是用来干嘛的呢,r是转义的意思吗?''' '''不是用来换行的吗?为什么会放在这里啊

白two 发表于 2021-8-19 00:05:04

本帖最后由 白two 于 2021-8-19 00:08 编辑

r是原始字符串 ,所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。
比如字符串里面 \n 是换行,但是如果在字符串前面加一个r,就会让它表示为字符本身而不会有特殊含义,打印出来就不是换行而是 \n 这个字符。

''' '''是因为字符串里面含有单引号或双引号,如果外层用单引号或双引号,就会优先和里面的单引号多双引号匹配。

还有注意用 r 的话,\ 不能放后面的引号前面,因为会被转义,那它就会不作为一个引号来使用,而是单纯地作为一个字符,就无法与前面的引号匹配,就没办法构成一个字符串,那 r 自然也没办法发挥作用,所以你看我 m 变量就将反斜杠往前提了一位。
页: [1]
查看完整版本: 课后习题问题