Melanie学python 发表于 2020-5-9 21:48:35

第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:}

qiuyouzhi 发表于 2020-5-9 21:57:18

改成这样:
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:50:23

本帖最后由 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次,没有机会啦~')


但是有一个问题,就是实际上会有四次机会,经过测试,大佬的程序和我的程序都会出现如下图的问题,不知道是哪里有问题呢?

Wei_Jian_Xian 发表于 2020-5-10 00:08:16

如下,这样就可以解决了

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次,没有机会啦~')

qiuyouzhi 发表于 2020-5-10 08:33:34

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("错误次数太多!")

Melanie学python 发表于 2020-5-10 09:49:26

Wei_Jian_Xian 发表于 2020-5-10 00:08
如下,这样就可以解决了

谢谢大佬,但是这样还是有4次机会

Melanie学python 发表于 2020-5-10 09:52:10

qiuyouzhi 发表于 2020-5-10 08:33


谢谢大佬,已解决{:10_288:}

qiuyouzhi 发表于 2020-5-10 10:26:55

Melanie学python 发表于 2020-5-10 09:52
谢谢大佬,已解决

设个最佳答案呗~

Melanie学python 发表于 2020-5-10 15:55:37

本帖最后由 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次,没有机会啦~')

另外,请问。。。。。。最佳答案怎么设置?不好意思啊~我以前没玩过论坛。

qiuyouzhi 发表于 2020-5-10 16:00:54

Melanie学python 发表于 2020-5-10 15:55
那可能要改一下,因为你的答案实际上还是4次机会。




噢,那个BUG我后来改了一下,但你自己改了更好{:10_256:}
现在可以设置最佳了吧
页: [1]
查看完整版本: 第009讲:了不起的分支和循环3 课后作业动动手:0