2013-11-29 4 views
-1

Почему компьютер не становится х? после того, как он пройдет через цикл и найдет что-то, что находится в списке, а не выбрано, не следует ли присваивать этому значению x компьютеру?петли внутри функции

def ComputerMove(gameboard): 
    for x in list: 
     if x not in picked and x in list: 
      computer = x 



list = ("b2", "a1", "c3", "a3", "c1", "a2", "b3", "b1", "c2") 

gameboard = {0:' ', 1:' ', 2:' ', 
     3:' ', 4:' ', 5:' ', 
     6:' ', 7:' ', 8:' ', 
     } 
picked = ("b2", "a1", "c3", "a3") 
ComputerMove(gameboard) 
+0

Что должно было возвращаться/делать? – JackMc

+0

, это просто вызов функции обратно, поэтому он может фактически запустить – user2864064

ответ

2

Во-первых, list тип /, неточности, так что вы не можете использовать его в качестве имени переменной. Во-вторых, у вас есть кортеж, а не список. Итак, я конвертировал те и этот код, как представляется, работает:

def ComputerMove(gameboard): 
    for x in l: 
     if x not in picked: 
      computer = x 
      return computer # not sure what do you want to do with this value? 



l = ["b2", "a1", "c3", "a3", "c1", "a2", "b3", "b1", "c2"] 

gameboard = {0:' ', 1:' ', 2:' ', 
     3:' ', 4:' ', 5:' ', 
     6:' ', 7:' ', 8:' ', 
     } 
picked = ["b2", "a1", "c3", "a3"] 
ComputerMove(gameboard) 
>>c1 
+0

Вы * можете * использовать зарезервированные ключевые слова в качестве имен переменных, но это не рекомендуется. –

+0

@SteinarLima IMO, что не рекомендуется. Переписывающие типы и ключевые слова являются самыми большими нет-нет в Python, поэтому я часто говорю новичкам, которые не разрешены. Просто потому, что интерпретатор позволит вам не значит, что это хорошо. Например, в Py 2.x вы _can_ делаете True, False = False, True может ли кто-нибудь в здравом уме сделать это? знак равно – rdodev

Смежные вопросы