Я немного задумываюсь о числовой игре, и у меня есть цикл while while, который я хочу продолжать цикл, пока пользователь не угадает правильное число , Прямо сейчас у меня есть номер, показанный для удобства тестирования. Я думаю, правильный номер или нет, но я получаю сообщение об ошибке «Объект Nonetype» не имеет атрибута «Угадай». Im confused, почему «while True» не имеет ошибки при первом запуске, но после этого возникает ошибка.Кажется, я не получаю цикл «while True», чтобы продолжать цикл
Tracker.py
from Number import *
class Runner(object):
def __init__(self, start):
self.start = start
print Integer.__doc__
print Integer.code
def play(self):
next_guess = self.start
while True:
next_guess = next_guess.Guess()
if next_guess == Integer.code:
print "Good!"
exit(0)
else:
print "Try again!"
Integer = Random_Integer()
Game = Runner(Integer)
Game.play()
Number.py
from random import randint
class Random_Integer(object):
"""Welcome to the guessing game! You have unlimited attempts
to guess the 3 random numbers, thats pretty much it."""
def __init__(self):
self.code = "%d%d%d" % (randint(1,9), randint(1,9), randint(1,9))
self.prompt = '> '
def Guess(self):
guess_code = raw_input(self.prompt)
Спасибо!
Стоит отметить: код OP будет по-прежнему ломаться после первого предположения, потому что, как только 'Guess' вернет значение угадывания, он все равно будет пытаться вызвать' Guess' в строке, а не в 'Random_Integer'. Ему нужно либо «Угадай» вернуть «сам» (и сохранить предположение где-то), либо, скорее всего, просто экземпляр «Random_Integer» хранится в другом месте, чтобы он не был перезаписан, например 'self.guesser = Random_Integer()', а затем ' next_guess = self.guesser.Guess() 'в цикле. –
Я говорю о втором раз в цикле, когда 'next_guess' является строкой, и он пытается называть' Guess() 'на нем. Ему нужно, чтобы это было 'next_guess = Integer.Guess()' вместо этого. –
Да, все адресовано. –