代码中使用计数器,少1的问题

题目如下:
#7:猜年龄游戏 要求: 允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出 #8:猜年龄游戏升级版 要求: 允许用户最多尝试3次 每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序 如何猜对了,就直接退出 
-------------------------------------------------------
代码一:
name='Helen'
password='123'
nm = input('账号')
psw = input('密码')
count=0 #计数器

while True:

count = count + 1
if nm==name and psw==password: #校验登录信息
print('hi %s' %name)
break
elif count>2: #校验是否错误超过3次
cmd=input('输入Y,继续;输入N退出')
if cmd=='Y' or cmd=='y':
count=0
elif cmd=='N' or cmd=='n':
print('退出游戏')
break
else:
cmd=input('指令有误,请重新收入')
else: #错误未超过三次时,循环体内重新输入用户信息
nm = input('账号')
psw = input('密码')


以上代码我一开始看起来没问题,新手的洋洋自得。
运行了一遍发现了问题--当count==3时,输入Y后,再次输入两次错误信息后,又重新让选择是否继续。应该是每次都允许输入三次,才提示~
那么问题出现在哪里呢?
对,是count计数器出问题了,代码中在循环体外加了一次输入。
初始化代码,第一个三次时没问题的。
当第二个三次时,循环体中将count置为0,回到循环体顶部,马上执行了一次count+=1;count==1???所以后面的都是执行两次
怎么解决呢?




代码二:
name='Helen'
password='123'
count=0 #计数器
while True:
nm = input('账号')
psw = input('密码')
count = count + 1

if nm==name and psw==password:
print('hi %s' %name)
break
elif count>2:
cmd=input('输入Y,继续;输入N退出')
if cmd=='Y' or cmd=='y':
count=0
elif cmd=='N' or cmd=='n':
print('退出游戏')
break
else:
cmd=input('指令有误,请重新收入')
1、把输入用户信息语句放在循环体顶部,计数器放在其后;
2、elif-else:语句中不再加输入语句,因为当前循环结束之后下一次循环第一个语句就是输入语句



posted on 2017-12-18 15:46  喵喵王  阅读(548)  评论(0)    收藏  举报