lzymm1 发表于 2020-2-7 16:41:35

【Python新手求助】关于判断用户密码

本帖最后由 lzymm1 于 2020-2-7 16:42 编辑

0. 设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含"*"则不计算在内。
所需程序演示:
>>>
请输入密码:*****
密码中不能含有"*"号!您还有 3 次机会!请输入密码:I Love ***
密码中不能含有"*"号!您还有 3 次机会!请输入密码:***IloveYou
密码中不能含有"*"号!您还有 3 次机会!请输入密码:小甲鱼是帅哥
密码输入错误!您还有 2 次机会!请输入密码:呃...鱼c好棒!!
密码输入错误!您还有 1 次机会!请输入密码:Fishc.com
密码正确,进入程序.......
小甲鱼的答案:
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
我写的是这样:
Password = 'FishC.com'
temp = input("请输入密码:")
for i in range(3,0,-1):
    if "*" in temp:
      print('密码中不能含有"*"号!',end = '')
    elif temp != Password:
      print('密码输入错误!',end = '')
    else:
      print("密码正确,进入程序......")
    print('您还有'+str(i)+'次机会!',end = '' )
    temp = input('请输入密码:')


我想用for循环实现,但是问题出在密码含有"*"号时他也会算一个循环,而且密码正确也会提示还有多少次机会,请输入密码这样的。请问如果是在保留for循环的条件下,该如何改进?

zltzlt 发表于 2020-2-7 16:44:49

使用 for 循环会麻烦得多。

Password = 'FishC.com'
temp = input("请输入密码:")
for i in range(3, 0, -1):
    while '*' in temp:
      temp = input("密码中不能含有'*'号!您还有" + str(i) + "次机会!请重新输入:")
    if temp != Password:
      print('密码输入错误!', end='')
    else:
      print("密码正确,进入程序......")
      break
    print('您还有 ' + str(i - 1) + ' 次机会!', end='')
    temp = input('请输入密码:')

一个账号 发表于 2020-2-7 16:57:21

建议用 while 循环,for 循环比 while 循环难得多

赵容博 发表于 2020-2-8 13:25:38

一个账号 发表于 2020-2-7 16:57
建议用 while 循环,for 循环比 while 循环难得多

同感,for循环放了2天愣是没看懂{:10_258:}{:10_285:}

Judie 发表于 2020-2-9 04:05:51

2楼说得对!
页: [1]
查看完整版本: 【Python新手求助】关于判断用户密码