鱼C论坛

 找回密码
 立即注册
查看: 2783|回复: 4

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

[复制链接]
发表于 2020-2-7 16:41:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

0. 设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含"*"则不计算在内。
所需程序演示:
>>>
请输入密码:*****
密码中不能含有"*"号!您还有 3 次机会!请输入密码:I Love ***
密码中不能含有"*"号!您还有 3 次机会!请输入密码:***IloveYou
密码中不能含有"*"号!您还有 3 次机会!请输入密码:小甲鱼是帅哥
密码输入错误!您还有 2 次机会!请输入密码:呃...鱼c好棒!!
密码输入错误!您还有 1 次机会!请输入密码:Fishc.com
密码正确,进入程序.......
小甲鱼的答案:
  1. count = 3
  2. password = 'FishC.com'

  3. while count:
  4.     passwd = input('请输入密码:')
  5.     if passwd == password:
  6.         print('密码正确,进入程序......')
  7.         break
  8.     elif '*' in passwd:
  9.         print('密码中不能含有"*"号!您还有', count, '次机会!', end=' ')
  10.         continue
  11.     else:
  12.         print('密码输入错误!您还有', count-1, '次机会!', end=' ')   
  13.     count -= 1
复制代码

我写的是这样:
  1. Password = 'FishC.com'
  2. temp = input("请输入密码:")
  3. for i in range(3,0,-1):
  4.     if "*" in temp:
  5.         print('密码中不能含有"*"号!',end = '')
  6.     elif temp != Password:
  7.         print('密码输入错误!',end = '')
  8.     else:
  9.         print("密码正确,进入程序......")
  10.     print('您还有'+str(i)+'次机会!',end = '' )
  11.     temp = input('请输入密码:')
复制代码


我想用for循环实现,但是问题出在密码含有"*"号时他也会算一个循环,而且密码正确也会提示还有多少次机会,请输入密码这样的。请问如果是在保留for循环的条件下,该如何改进?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-7 16:44:49 | 显示全部楼层
使用 for 循环会麻烦得多。

  1. Password = 'FishC.com'
  2. temp = input("请输入密码:")
  3. for i in range(3, 0, -1):
  4.     while '*' in temp:
  5.         temp = input("密码中不能含有'*'号!您还有" + str(i) + "次机会!请重新输入:")
  6.     if temp != Password:
  7.         print('密码输入错误!', end='')
  8.     else:
  9.         print("密码正确,进入程序......")
  10.         break
  11.     print('您还有 ' + str(i - 1) + ' 次机会!', end='')
  12.     temp = input('请输入密码:')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-2-7 16:57:21 | 显示全部楼层
建议用 while 循环,for 循环比 while 循环难得多
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-2-8 13:25:38 | 显示全部楼层
一个账号 发表于 2020-2-7 16:57
建议用 while 循环,for 循环比 while 循环难得多

同感,for循环放了2天愣是没看懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-9 04:05:51 | 显示全部楼层
2楼说得对!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 17:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表