《零基础入门学习Python》第014讲课后题
今天问题很多,有点崩溃:1、定义一个跨越多行的字符串吗(请至少写出两种实现的方法)
小甲鱼列举了三个定义跨越多行字符串的方法之后,我copy之后print出来的依旧就是一长串字符,压根就没有换行,那为什么还要跨行定义呢?我不大明白...
2、str1 = '<a href="http://www.fishc.com/dvd" target="_blank">鱼C资源打包</a>'
str1
小甲鱼提问:请问下边语句会显示什么内容?
难不成我要一个个去数出来吗??为什么要这么做....本来我可以用find()找出来索引位置就好了,弄成负数我只能一个个数了?
3、“三引号字符串不赋值的情况下,通常当作跨行注释使用”这句话我看不懂...我难道语文能力出了问题....
4、最后一题,
# 密码安全性检查代码
#
# 低级密码要求:
# 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 in chars):
print("高")
print("请继续保持")
break
else:
print("中")
print("请按以下方式提升您的密码安全级别:\n\
\t1. 密码必须由数字、字母及特殊字符三种组合\n\
\t2. 密码只能由字母开头\n\
\t3. 密码长度不能低于16位")
break
我无论怎么改,程序都报错...到底正确写法是怎样的?
学完这一课我要去消化很久很久了{:10_285:}
本帖最后由 Twilight6 于 2020-7-1 17:05 编辑
1、定义一个跨越多行的字符串吗(请至少写出两种实现的方法)
小甲鱼列举了三个定义跨越多行字符串的方法之后,我copy之后print出来的依旧就是一长串字符,压根就没有换行,那为什么还要跨行定义呢?我不大明白...
我们的程序的窗口就只有这么的大,当你的字符串很长,字符串全部显示在一行时候,你就会觉得比较丑了,所以跨行会使你的代码更加美观
2、str1 = '<a href="http://www.fishc.com/dvd" target="_blank">鱼C资源打包</a>'
str1
小甲鱼提问:请问下边语句会显示什么内容?
难不成我要一个个去数出来吗??为什么要这么做....本来我可以用find()找出来索引位置就好了,弄成负数我只能一个个数了?
对的,这题就是纯属的叫你计算,为了让你印象更深刻,实际上平时一般不会叫你自己去算来用到这样切片索引
3、“三引号字符串不赋值的情况下,通常当作跨行注释使用”这句话我看不懂...我难道语文能力出了问题....
三引号赋值:
string='''I love FishC.com
By:Twilight
~~~~'''
print(string)
三引号注释(和#号用法差不多,只不过这个可以多行注释,还有可以文档检测):
'''I love FishC.com
By:Twilight
~~~~'''
我无论怎么改,程序都报错...到底正确写法是怎样的?
我运行很正常呀,你重新试试看:
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 in chars):
print("高")
print("请继续保持")
break
else:
print("中")
print("请按以下方式提升您的密码安全级别:\n\
\t1. 密码必须由数字、字母及特殊字符三种组合\n\
\t2. 密码只能由字母开头\n\
\t3. 密码长度不能低于16位")
break
本帖最后由 yhhpf 于 2020-7-1 16:53 编辑
1,特意回去看了下题目答案,没问题的,你放下你的代码;
2,存在即合理,你只看到了你知道字符某个特征的情况下用find来找,但是当字符特征变了呢?比如变成需要取字符串最后5位,而这些字符串没有固定字符时?
3,三引号内的内容如果没去引用他,那他里面的内容就成了和注释一样的效果(参考#和面的内容);
4,并无报错? 我居然想不起来有讲find()这个函数 Twilight6 发表于 2020-7-1 16:49
我们的程序的窗口就只有这么的大,当你的字符串很长,字符串全部显示在一行时候,你就会觉得比 ...
我明白了!真是感动!
最后一题我知道为啥我运行不了,因为我把里面的注释以及空白行都删掉了。。。所以格式让我改的面目全非。谢谢!~ 彦彦儿 发表于 2020-7-2 09:39
我明白了!真是感动!
最后一题我知道为啥我运行不了,因为我把里面的注释以及空白行都删掉了。。。所以 ...
{:10_297:} 哈哈,加油加油~ 405794672 发表于 2020-7-1 19:36
我居然想不起来有讲find()这个函数
我就是对照着小甲鱼那节课里面有个表格找出来用的哈 yhhpf 发表于 2020-7-1 16:49
1,特意回去看了下题目答案,没问题的,你放下你的代码;
2,存在即合理,你只看到了你知道字符某个特征的情 ...
嗯嗯!我懂了~我一开始不知道那些注释是可以写进去代码里面的哈 Twilight6 发表于 2020-7-2 09:40
哈哈,加油加油~
啊老师,我还有问题:
print("请按以下方式提升您的密码安全级别:\n\
\t1. 密码必须由数字、字母及特殊字符三种组合\n\
\t2. 密码只能由字母开头\n\
\t3. 密码长度不能低于16位")
break
这个等级是跟while语句里面的if语句一样(我是从空格来判断),那为啥评定为高等级密码的时候不会打印这几行字呢?因为从最后这行的break的等级来看感觉是跳出来打印这几句话,而不是在跳出来while?而且高等级密码的break也只是跳出elif这里?
我不知道我的问题是不是说明白了...
彦彦儿 发表于 2020-7-2 10:49
啊老师,我还有问题:
print("请按以下方式提升您的密码安全级别:\n\
\t1. 密码必须由数字、 ...
这个是在循环内的哈,不是 break 后打印的,而是没次循环都会打印
而因为只有高级密码的 if 下面有 break,所以直接退出了循环,就导致代码还没运行到 print 就退出了所以不打印
Twilight6 发表于 2020-7-2 10:51
这个是在循环内的哈,不是 break 后打印的,而是没次循环都会打印
而因为只有高级密码的 if 下面 ...
哦哦我能明白意思了,我的问题就是在于没有理解到第一个break和第二个break其实都是在跳出来while 1这个循环。强迫症总是想改成这样:
while 1:
print("您的密码安全级别评定为:", end='')
if flag_len == 1 or flag_con == 1:
print("低")
elif flag_len == 3 and flag_con == 3 and (passwd in chars):
print("高")
print("请继续保持")
break
else:
print("中")
print("请按以下方式提升您的密码安全级别:\n\
\t1. 密码必须由数字、字母及特殊字符三种组合\n\
\t2. 密码只能由字母开头\n\
\t3. 密码长度不能低于16位")
break
总感觉这样我舒服点,好理解一点...
于是,我又有问题了(我是问题少女吗?),为什么是while 1?不能单独用while?或者while 2? 彦彦儿 发表于 2020-7-2 11:15
哦哦我能明白意思了,我的问题就是在于没有理解到第一个break和第二个break其实都是在跳出来while 1这个 ...
都可以的 while 10086 也没问题条件循环只要条件成立都会循环的 即条件为 True
而 Python 中除了 0 None 空字符串、空字典、空列表、空元组、等都为的布尔类型值的 False
所以你这里随便就好,只要能为 True
Twilight6 发表于 2020-7-2 11:18
都可以的 while 10086 也没问题条件循环只要条件成立都会循环的 即条件为 True
而 Python 中除了...
那就是while True也可以咯? 彦彦儿 发表于 2020-7-2 11:31
那就是while True也可以咯?
对~~这个最直接
>>> True == 1 # 1直接等于了 True
True
>>> True == '1'# 而字符串是只能看成 bool 的True 而不等价哈
False
>>> True == bool('1')
True
Twilight6 发表于 2020-7-2 11:32
对~~这个最直接
{:10_254:}{:10_254:}{:10_254:}非常感谢~~~~! 彦彦儿 发表于 2020-7-2 11:55
非常感谢~~~~!
客气了~~
页:
[1]