鱼C论坛

 找回密码
 立即注册
查看: 2751|回复: 7

[已解决]验证用户密码程序

[复制链接]
发表于 2020-5-7 22:06:19 | 显示全部楼层 |阅读模式

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

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

x
运行结果:
====
请输入密码:**
密码中不能含有"*"号!您还有 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:38:05
本帖最后由 txxcat 于 2020-5-7 22:56 编辑

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

优化代码:
  1. bingo='FishC.com'
  2. count=3
  3. while count:
  4.     code=input('请输入密码:')
  5.     if '*' in code:                 #<--改成if
  6.         print('密码中不能含有"*"号!您还有',count,'次机会!',end=' ')
  7.         continue
  8.     if code!=bingo:
  9.         count-=1
  10.         print('密码输入错误!您还有',count,'次机会!',end=' ')
  11.     else:
  12.         print('密码正确,进入程序……')
  13.         break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-7 22:07:22 | 显示全部楼层
请大家帮忙看看哪里出了问题?谢谢了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-7 22:29:04 | 显示全部楼层
我这里没有问题呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-7 22:38:05 | 显示全部楼层    本楼为最佳答案   
本帖最后由 txxcat 于 2020-5-7 22:56 编辑

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

优化代码:
  1. bingo='FishC.com'
  2. count=3
  3. while count:
  4.     code=input('请输入密码:')
  5.     if '*' in code:                 #<--改成if
  6.         print('密码中不能含有"*"号!您还有',count,'次机会!',end=' ')
  7.         continue
  8.     if code!=bingo:
  9.         count-=1
  10.         print('密码输入错误!您还有',count,'次机会!',end=' ')
  11.     else:
  12.         print('密码正确,进入程序……')
  13.         break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-8 08:11:10 | 显示全部楼层
txxcat 发表于 2020-5-7 22:38
你输入*后有一次input,然后继续执行下面的打印和重新输入的代码,然后才继续下一次循环进行密码验证,也就 ...

非常感谢你的修改~我看懂了。我对continue的用法还不大熟悉,代码也很繁琐。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-8 08:13:42 | 显示全部楼层
liuzhengyuan 发表于 2020-5-7 22:29
我这里没有问题呀

我的代码确实有问题的,你可以看看4楼的解决方法~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

哈哈哈我也跟着复习了remove(),谢谢呀。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 10:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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