【发布时间】:2016-04-02 10:03:01
【问题描述】:
使用VS2015Python 3.4
这个while 计数器有一些问题。它慢慢让我发疯,因为我确信它“应该”工作但没有更新计数器。我已经运行了步进调试,可以看到计数器在 while 条件行之前重置为 3。至少可以说让我很烦。
import random
import getpass
print ('Welcome to Rock, Paper or Sissors\nEnter an option.')
user_obj = getpass.getpass('Rock, Paper or Sissors: ').lower()
ai_obj = input('Rock, Paper or Sissors: ').lower()
rps = ('rock', 'paper', 'sissors')
#ai_rps = ['rock', 'paper', 'sissors']
#ai_obj = random.choice(ai_rps)
counter = 3
def rps_game(user_obj, ai_obj):
print('Player selected %s ' % user_obj)
print('Computer selected %s ' % ai_obj)
condition = user_obj in rps and ai_obj in rps
while condition == True and counter >= 0:
if user_obj == ai_obj:
print('Its a draw!')
elif user_obj == 'rock':
if ai_obj == 'paper':
print('You lose!')
break
else:
print('You win!')
elif user_obj == 'paper':
if ai_obj == 'sissors':
print('You lose!')
break
else:
print('You win!')
elif user_obj == 'sissors':
if ai_obj == 'rock':
print('You lose!')
else:
print('You win!')
break
else:
counter += 1
print('Invalid input, please select Rock, Paper or Sissors')
rps_game(user_obj, ai_obj)
rps_game(user_obj, ai_obj)
【问题讨论】:
-
您遇到错误了吗?我收到一个错误。我得到
UnboundLocalError: local variable 'counter' referenced before assignment。这是你得到的错误吗? -
这是真的,但是如果我在定义的函数内移动变量,它会使 while 循环无限。请原谅我的无知我对编码还是很陌生。
-
您并没有始终如一地打破循环。在某些情况下,您在获胜后会休息,而在其他情况下,您会继续比赛。检查所有的循环中断场景
-
另请注意,在 while 循环中,您正在检查条件 == True,但在循环中您没有修改条件的值,因此这毫无意义。
-
与 counter 相同(如果你从未点击过最后一个 else 语句)
标签: python loops while-loop counter