鱼C论坛

 找回密码
 立即注册
查看: 2014|回复: 15

[已解决]设计一个验证用户密码程序,用户只有三次机会输入错误

[复制链接]
发表于 2021-8-6 15:46:51 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 StudyPython_1 于 2021-8-6 16:30 编辑

设计一个验证用户密码程序,用户只有三次机会输入错误,其中输入*号不计入次数
give=str(input("请用户输入密码:"))
password= '655361'
time=1
while time< 3:
    if give == password:
        print("真厉害啊,猜对了!")
        break
    if "*" in give:
        print('密码不能包含*号')
        time -=1
    give=input('输错了,请重新输入密码:')
    time += 1
if time == 3:
    print('机会用完了')

不会使用continue让输入*号不计入次数,想了笨办法,这个方法还有bug,就是第一次第二次输入*,可以辨别并次数-1,但是最后一次输入的时候,就不能辨别了

感谢大家的回答,我的问题是 使用continue能退出这次的循环,但是time不计数

新手对这个continue的使用好迷茫啊,这个逻辑想了好久
最佳答案
2021-8-6 16:45:13

大意了,我改了改逻辑
give=input("请用户输入密码:")
password= '655361'
time=3
while time:
    if give == password:
        print("真厉害啊,猜对了!")
        break
    elif "*" in give:
        give=input('密码不能包含*号,请重新输入:')
        continue
    time -= 1
    if time:
        give=input(f'输错了,您还有{time}次机会请重新输入密码:')
    
    
if time == 3:
    print('机会用完了')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-6 15:57:49 | 显示全部楼层
问题是?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-6 15:58:24 | 显示全部楼层
give=input("请用户输入密码:")
password= '655361'
time=1
while time< 3:
    if give == password:
        print("真厉害啊,猜对了!")
        break
    if "*" in give:
        give=input('密码不能包含*号,请重新输入:')
        continue
    give=input(f'输错了,您还有{3-time}次机会请重新输入密码:')
    time += 1
if time == 3:
    print('机会用完了')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-6 15:59:16 | 显示全部楼层
give = str(input("请用户输入密码:"))
password = '655361'
time = 1
while time < 3:
    if give == password:
        print("真厉害啊,猜对了!")
        break
    if "*" in give:
        print('密码不能包含*号')
        continue
    give = input('输错了,请重新输入密码:')
    time += 1
if time == 3:
    print('机会用完了')
continue 与break 作用都是跳出循环
但continue是跳出此次循环,break是整个循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-8-6 15:59:22 | 显示全部楼层
你这个是对continue和break的不理解和不熟悉,写个简单的例子来简要说明下continue和break的区别
for i in range(5):
    if i%2==0:
        print(i)
    else:
        continue
    
#这里输出的是
0
2
4
for i in range(5):
    if i%2==0:
        print(i)
    else:
        break
    
#这里输出的是
0

从两个例子我们可以知道,
当i=1的时候两个方式的处理区别
break是直接跳出循环
而continue是跳过这次继续执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-6 16:09:27 | 显示全部楼层
???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-6 16:22:33 | 显示全部楼层

哈哈,倒数第二行的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-6 16:24:14 | 显示全部楼层

这个答案还是把输入*号的次数计入了呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-6 16:25:28 | 显示全部楼层
StudyPython_1 发表于 2021-8-6 16:24
这个答案还是把输入*号的次数计入了呀

我自己测试了一下,不会呀
请用户输入密码:*
密码不能包含*号,请重新输入:*
密码不能包含*号,请重新输入:*
密码不能包含*号,请重新输入:*
密码不能包含*号,请重新输入:*
密码不能包含*号,请重新输入:*
密码不能包含*号,请重新输入:*
密码不能包含*号,请重新输入:1
输错了,您还有2次机会请重新输入密码:2
输错了,您还有1次机会请重新输入密码:3
机会用完了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-6 16:36:28 | 显示全部楼层
逃兵 发表于 2021-8-6 16:25
我自己测试了一下,不会呀

Python 3.9.6 (tags/v3.9.6:db3ff76, Jun 28 2021, 15:26:21) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> 
请用户输入密码:12
输错了,您还有2次机会请重新输入密码:23
输错了,您还有1次机会请重新输入密码:*
机会用完了
>>> 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-6 16:39:26 | 显示全部楼层
2012277033 发表于 2021-8-6 15:59
你这个是对continue和break的不理解和不熟悉,写个简单的例子来简要说明下continue和break的区别

这个基本的概念我是知道的,就是在真正用continue的时候,感觉有点转不过来弯,多谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-6 16:45:13 | 显示全部楼层    本楼为最佳答案   

大意了,我改了改逻辑
give=input("请用户输入密码:")
password= '655361'
time=3
while time:
    if give == password:
        print("真厉害啊,猜对了!")
        break
    elif "*" in give:
        give=input('密码不能包含*号,请重新输入:')
        continue
    time -= 1
    if time:
        give=input(f'输错了,您还有{time}次机会请重新输入密码:')
    
    
if time == 3:
    print('机会用完了')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-6 16:56:59 | 显示全部楼层
逃兵 发表于 2021-8-6 16:45
大意了,我改了改逻辑

最后一个 if time :
可以理解为 if time is True:吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-6 16:58:10 | 显示全部楼层
StudyPython_1 发表于 2021-8-6 16:56
最后一个 if time :
可以理解为 if time is True:吗

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-6 17:01:31 | 显示全部楼层

多谢! hh

发现最后一行应该改为
if time==0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-6 17:04:41 | 显示全部楼层
StudyPython_1 发表于 2021-8-6 17:01
多谢! hh

发现最后一行应该改为

if time == 1:
条件语句
只要条件为真就能运行
非零非空都为True
这里可以简写为time

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 19:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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