设计一个验证用户密码程序,用户只有三次机会输入错误
本帖最后由 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的使用好迷茫啊,这个逻辑想了好久 问题是? 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('机会用完了')
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是整个循环 你这个是对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是跳过这次继续执行 ??? 青出于蓝 发表于 2021-8-6 15:57
问题是?
哈哈,倒数第二行的 逃兵 发表于 2021-8-6 15:58
这个答案还是把输入*号的次数计入了呀 StudyPython_1 发表于 2021-8-6 16:24
这个答案还是把输入*号的次数计入了呀
我自己测试了一下,不会呀
请用户输入密码:*
密码不能包含*号,请重新输入:*
密码不能包含*号,请重新输入:*
密码不能包含*号,请重新输入:*
密码不能包含*号,请重新输入:*
密码不能包含*号,请重新输入:*
密码不能包含*号,请重新输入:*
密码不能包含*号,请重新输入:1
输错了,您还有2次机会请重新输入密码:2
输错了,您还有1次机会请重新输入密码:3
机会用完了 逃兵 发表于 2021-8-6 16:25
我自己测试了一下,不会呀
Python 3.9.6 (tags/v3.9.6:db3ff76, Jun 28 2021, 15:26:21) on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
请用户输入密码:12
输错了,您还有2次机会请重新输入密码:23
输错了,您还有1次机会请重新输入密码:*
机会用完了
>>> 2012277033 发表于 2021-8-6 15:59
你这个是对continue和break的不理解和不熟悉,写个简单的例子来简要说明下continue和break的区别
这个基本的概念我是知道的,就是在真正用continue的时候,感觉有点转不过来弯,多谢啦 StudyPython_1 发表于 2021-8-6 16:36
大意了,我改了改逻辑
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('机会用完了')
逃兵 发表于 2021-8-6 16:45
大意了,我改了改逻辑
最后一个 if time :
可以理解为 if time is True:吗 StudyPython_1 发表于 2021-8-6 16:56
最后一个 if time :
可以理解为 if time is True:吗
对 逃兵 发表于 2021-8-6 16:58
对
多谢! hh
发现最后一行应该改为
if time==0 StudyPython_1 发表于 2021-8-6 17:01
多谢! hh
发现最后一行应该改为
if time == 1:
条件语句
只要条件为真就能运行
非零非空都为True
这里可以简写为time
页:
[1]