第009讲:了不起的分支和循环3 课后作业动动手:0
课后题目如下:0. 设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含"*"则不计算在内。
程序演示如图:
我写的程序如下:
bingo='FishC.com'
i=3
password=input('请输入密码:')
while password!=bingo and i>0:
if '*' in password:
print('密码中不能含有“*”号!您还有',i,'次机会!请输入密码:')
continue
else:
print('密码输入错误!您还有',i-1,'次机会!请输入密码:')
i-=1
print('密码正确,进入程序......')
但是程序好像错误,不知道哪里有问题,望大佬能帮忙解惑,拜托{:10_288:} 改成这样:
bingo='FishC.com'
i=3
password=input('请输入密码:')
flag = False
while i>0:
if password == bingo:
flag = True
break
elif '*' in password:
password = input('密码中不能含有“*”号!您还有' + str(i) +'次机会!请输入密码:')
else:
i-=1
password = input('密码输入错误!您还有'+str(i)+'次机会!请输入密码:')
if flag:
print('密码正确,进入程序......')
else:
print("错误次数太多!") 本帖最后由 Melanie学python 于 2020-5-9 22:52 编辑
qiuyouzhi 发表于 2020-5-9 21:57
改成这样:
谢谢大佬,我参考大佬的程序,改进了我的程序,如下:
bingo='FishC.com'
i=3
password=input('请输入密码:')
while password!=bingo and i>0:
if '*' in password:
password=input('密码中不能含有"*"号!您还有'+str(i)+'次机会!请输入密码:')
else:
password=input('密码输入错误!您还有'+str(i-1)+'次机会!请输入密码:')
i-=1
if password==bingo:
print('密码正确,进入程序......')
else:
print('已错误3次,没有机会啦~')
但是有一个问题,就是实际上会有四次机会,经过测试,大佬的程序和我的程序都会出现如下图的问题,不知道是哪里有问题呢?
如下,这样就可以解决了
bingo='FishC.com'
i=3
password=input('请输入密码:')
while password!=bingo and i>0:
if '*' in password:
password=input('密码中不能含有"*"号!您还有'+str(i+1)+'次机会!请输入密码:')
else:
password=input('密码输入错误!您还有'+str(i)+'次机会!请输入密码:')
i-=1
if password==bingo:
print('密码正确,进入程序......')
else:
print('已错误3次,没有机会啦~')
Melanie学python 发表于 2020-5-9 22:50
谢谢大佬,我参考大佬的程序,改进了我的程序,如下:
bingo='FishC.com'
i=3
password=input('请输入密码:')
flag = False
while i > 0:
if password == bingo:
flag = True
break
elif '*' in password:
password = input('密码中不能含有“*”号!您还有' + str(i) +'次机会!请输入密码:')
else:
password = input('密码输入错误!您还有'+str(i)+'次机会!请输入密码:')
i-=1
if flag:
print('密码正确,进入程序......')
else:
print("错误次数太多!")
Wei_Jian_Xian 发表于 2020-5-10 00:08
如下,这样就可以解决了
谢谢大佬,但是这样还是有4次机会 qiuyouzhi 发表于 2020-5-10 08:33
谢谢大佬,已解决{:10_288:} Melanie学python 发表于 2020-5-10 09:52
谢谢大佬,已解决
设个最佳答案呗~ 本帖最后由 Melanie学python 于 2020-5-10 15:57 编辑
qiuyouzhi 发表于 2020-5-10 10:26
设个最佳答案呗~
那可能要改一下,因为你的答案实际上还是4次机会。
我是把条件里面的i>0修改为i>1解决了这个问题。
程序如下:bingo='FishC.com'
i=3
password=input('请输入密码:')
while password!=bingo and i>1:
if '*' in password:
password=input('密码中不能含有"*"号!您还有'+str(i)+'次机会!请输入密码:')
else:
password=input('密码输入错误!您还有'+str(i-1)+'次机会!请输入密码:')
i-=1
if password==bingo:
print('密码正确,进入程序......')
else:
print('已错误3次,没有机会啦~')
另外,请问。。。。。。最佳答案怎么设置?不好意思啊~我以前没玩过论坛。 Melanie学python 发表于 2020-5-10 15:55
那可能要改一下,因为你的答案实际上还是4次机会。
噢,那个BUG我后来改了一下,但你自己改了更好{:10_256:}
现在可以设置最佳了吧
页:
[1]