arbsteven 发表于 2018-6-25 13:22:56

恳请高手帮忙看下为什么下面这个coding达不到要求

代码目的: 密码最多输入三次, 其中*不计次数

求助: 第一次,第二次输入错误, 第三次输入正确的密码为何同样打印出密码错误, 却没有执行第一个循环呢?

count = 3
password = 'bbb'
temp = input('请输入密码:')
while count:
   
    if temp == password:
      print('密码正确,loading...')
      break
    elif '*' in temp:
      temp = input("密码错误,不能带有‘*’,你还有 %d 次机会,请重新输入:"%count)
    else:
      count -= 1
      temp = input("密码错误,你还有 %d 次机会,请重新输入:"%count)
      if count == 1:
            print("密码错误,游戏结束")
            break

BngThea 发表于 2018-6-25 14:04:43

最后的if条件改为 count==0

arbsteven 发表于 2018-6-25 14:09:52

BngThea 发表于 2018-6-25 14:04
最后的if条件改为 count==0

这个试过了,如果改为0就会允许第四次输入密码。

BngThea 发表于 2018-6-25 14:32:58

arbsteven 发表于 2018-6-25 14:09
这个试过了,如果改为0就会允许第四次输入密码。

把while循环的条件改为 count-1

arbsteven 发表于 2018-6-25 16:40:14

BngThea 发表于 2018-6-25 14:32
把while循环的条件改为 count-1

老铁,改了之后,前面2次输入错误的PW, 最后一次输入正确的PW,打印出的结果还是不对(应该打印出密码正确,loading...)

请输入密码:q
密码错误,你还有 2 次机会,请重新输入:w
密码错误,你还有 1 次机会,请重新输入:bbb
密码错误,游戏结束

BngThea 发表于 2018-6-25 17:03:39

arbsteven 发表于 2018-6-25 16:40
老铁,改了之后,前面2次输入错误的PW, 最后一次输入正确的PW,打印出的结果还是不对(应该打印出密码正 ...

逻辑有点问题,应该先判断count是否为零再接收输入

count = 3
password = 'bbb'
temp = input('请输入密码:')
while count:
    if temp == password:
      print('密码正确,loading...')
      break
    elif '*' in temp:
      temp = input("密码错误,不能带有‘*’,你还有 %d 次机会,请重新输入:"%count)
    else:
      count -= 1      
      if count == 0:
            print("密码错误,游戏结束")
            break
      temp = input("密码错误,你还有 %d 次机会,请重新输入:"%count)

arbsteven 发表于 2018-6-26 09:18:10

BngThea 发表于 2018-6-25 17:03
逻辑有点问题,应该先判断count是否为零再接收输入

一语中的!特别感谢,高手{:10_275:}   
页: [1]
查看完整版本: 恳请高手帮忙看下为什么下面这个coding达不到要求