姜饼人 发表于 2020-5-7 22:06:19

验证用户密码程序

运行结果:
====
请输入密码:**
密码中不能含有"*"号!您还有 3 次机会! 请输入密码:FishC.com
密码输入错误!您还有 2 次机会! 请输入密码:FishC.com
密码正确,进入程序……
>>>

代码:
code=input('请输入密码:')
bingo='FishC.com'
i=1
count=3
while i<=3:
    if code!=bingo:
      while '*' in code:
            print('密码中不能含有"*"号!您还有',count,'次机会!',end=' ')
            code=input('请输入密码:')
      count-=1
      print('密码输入错误!您还有',count,'次机会!',end=' ')
      if count==0:
            break
      code=input('请输入密码:')
      i+=1
    elif code==bingo:
      print('密码正确,进入程序……')
      break

姜饼人 发表于 2020-5-7 22:07:22

请大家帮忙看看哪里出了问题?谢谢了。

liuzhengyuan 发表于 2020-5-7 22:29:04

我这里没有问题呀

txxcat 发表于 2020-5-7 22:38:05

本帖最后由 txxcat 于 2020-5-7 22:56 编辑

你输入*后有一次input,然后继续执行下面的打印和重新输入的代码,然后才继续下一次循环进行密码验证,也就是说输入*后的第二次input完全无效,会直接打印密码错误然后又第三次input。
代码改动最少:
code=input('请输入密码:')
bingo='FishC.com'
i=1
count=3
while i<=3:
    if code!=bingo:
      if '*' in code:               #<--改成if
            print('密码中不能含有"*"号!您还有',count,'次机会!',end=' ')
            code=input('请输入密码:')
            continue                  #<--加入回到循环头
      count-=1
      print('密码输入错误!您还有',count,'次机会!',end=' ')
      if count==0:
            break
      code=input('请输入密码:')
      i+=1
    elif code==bingo:
      print('密码正确,进入程序……')
      break
优化代码:
bingo='FishC.com'
count=3
while count:
    code=input('请输入密码:')
    if '*' in code:               #<--改成if
      print('密码中不能含有"*"号!您还有',count,'次机会!',end=' ')
      continue
    if code!=bingo:
      count-=1
      print('密码输入错误!您还有',count,'次机会!',end=' ')
    else:
      print('密码正确,进入程序……')
      break

姜饼人 发表于 2020-5-8 08:11:10

txxcat 发表于 2020-5-7 22:38
你输入*后有一次input,然后继续执行下面的打印和重新输入的代码,然后才继续下一次循环进行密码验证,也就 ...

非常感谢你的修改~我看懂了。我对continue的用法还不大熟悉,代码也很繁琐。

姜饼人 发表于 2020-5-8 08:13:42

liuzhengyuan 发表于 2020-5-7 22:29
我这里没有问题呀

我的代码确实有问题的,你可以看看4楼的解决方法~

小甲鱼{i}号 发表于 2020-5-12 11:37:31

姜饼人 发表于 2020-5-8 08:13
我的代码确实有问题的,你可以看看4楼的解决方法~

我改了一下题目,输入*可以自动删除,练习了remove方法
str = '123456789'
str1=list(str)
count = 3
while count+1:
    temp = input("请输入你的密码")
    list1 = list(temp)
    while '*' in list1:
      list1.remove('*')
    if str1 == list1:
      print("密码输入正确")
      break
    else:
      print("密码输入错误你还有",count,"次机会")
      count-=1

姜饼人 发表于 2020-5-12 17:13:31

小甲鱼{i}号 发表于 2020-5-12 11:37
我改了一下题目,输入*可以自动删除,练习了remove方法
str = '123456789'
str1=list(str)


哈哈哈我也跟着复习了remove(),谢谢呀。
页: [1]
查看完整版本: 验证用户密码程序