|
30鱼币
设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含"*"则不计算在内。
count = 3
password = 'FishC.com'
while count:
passwd = input('请输入密码:')
if passwd == password:
print('密码正确,进入程序......')
break
elif '*' in passwd:
print('密码中不能含有"*"号!您还有', count, '次机会!', end=' ')
continue
else:
print('密码输入错误!您还有', count-1, '次机会!', end=' ')
count -= 1
看了两遍小甲鱼讲这个的视频还是对这个不解,就是感觉break continue在一起用 很懵逼的,一个终止当前循环,跳出循环,一个终止当前循环,检测 开始下一轮循环,就是感觉思路好乱好乱,“*”不算次数这个更是不懂,如果下次再给这样的题目 我感觉我还是不太会,感觉每次的课后题都有一点拔高了,讲解不是太仔细。 这种题的整体思路是什么求解?教人以渔谢谢。 我上夜班可能会晚一些看到
能不能帮我在每一行代码后注释一下这段代码是什么意思?
注意自己第一行 count = 3 的缩进,这一点在 python 里面很重要
- count = 3 # 三次机会
- password = 'FishC.com'
- while count: # 当 count 不为 0 时 执行 while 循环
- # passwd 是一个 str 类型 而 input 不论输入什么最后都是 str 类型,所以不需要强制转换
- passwd = input('请输入密码:')
- if passwd == password: # 如果用户输入和密码相同,则使用 break 退出 while 循环
- print('密码正确,进入程序......')
- break # break 退出 while 循环,即不再运行 while 循环
- elif '*' in passwd: # 这个为什么不让有 * 我不是很理解,个人认为应该是一个程序的需求,就像很多不允许使用字母(银行密码)或者不允许使用数字
- print('密码中不能含有"*"号!您还有', count, '次机会!', end=' ')
- continue # continue 表示退出这一层 while 循环,但是 while 循环并没有完全退出。之所以这么做是为了不运行后续的代码,即 count -= 1,因为此时用户输入的类型不符合程序要求
- # 其实 continue 就相当于跳出本轮循环,并且不执行 continue 后面的语句,直接进入下一层循环
- else:
- # 这个应该就不需要怎么讲了吧,打印剩余次数,end = ' ' 表明不换行,每一次的打印结果用 空格 作为间隔
- print('密码输入错误!您还有', count-1, '次机会!', end=' ')
- count -= 1 # 机会 -1
复制代码
|
-
如图
最佳答案
查看完整内容
注意自己第一行 count = 3 的缩进,这一点在 python 里面很重要
|