2016-01-13 5 views
0

Я делаю легкую игру Tic Tac Toe (не так просто, как я думал, это будет). Я хочу создать функцию, которая спрашивает игрока, какой знак хотел бы играть (x или o). У меня проблема с возвращаемыми значениями. Он просто ничего не вернет ... как ничто не изменилось.Функция не вернет новое значение Python 2.7

player_choice = '' 
computer_choice = '' 

def player_sign(player, computer): 
    choice = raw_input("Do you want to be X or O?: ").lower() 
    while choice != 'x' and choice != 'o': 
     print "Error!\n Wrong input!" 
     choice = raw_input("Do you want to be X or Y?: ").lower() 
    if choice == 'x': 
     print "X is yours!" 
     player = 'X' 
     computer = 'O' 
     return player, computer 
    elif choice == 'o': 
     print "You've chosen O!" 
     player = 'O' 
     computer = 'X' 
     return player, computer 
    else: 
     print "Error!\n Wrong input!" 
     return 0 
player_sign(player_choice, computer_choice) 

Пытались с образцами, как присвоения значений player_choice и computer_choice и печатает начальную строку. Что я делаю не так?

+0

Как вы называете эту функцию? Похоже, что ваша проблема, вероятно, является непониманием того, какие параметры и значения возврата действительно существуют. Например, для 'player' и' computer' нет смысла здесь аргументировать. Аргументы используются для того, чтобы вызывающий мог рассказать о функциях, а не о том, чтобы функция могла рассказать о вещах своему вызывающему. – user2357112

+0

Возможно, это проблема с уценкой, но отказ кажется неправильным. Удостоверьтесь, что все когда-либо после def и while отступали на 4 пробела. – falstaff

+0

Предполагаете ли вы что-то делать с 'player_choice' и' computer_choice'?, Также звонок функции будет замечательным – gerosalesc

ответ

0

Вы хотите мутировать неизменный тип (строка) внутри функции. Это невозможно. Подробное объяснение см. На вопрос: How do I pass a variable by reference?.

Что вам нужно сделать, это просто присвоить возвращаемое значение функции именам в области, где вызывается функция.

def player_sign(): 
    choice = raw_input("Do you want to be X or O?: ").lower() 
    while choice != 'x' and choice != 'o': 
     print "Error!\n Wrong input!" 
     choice = raw_input("Do you want to be X or Y?: ").lower() 
    if choice == 'x': 
     print "X is yours!" 
     player = 'X' 
     computer = 'O' 
     return player, computer 
    elif choice == 'o': 
     print "You've chosen O!" 
     player = 'O' 
     computer = 'X' 
     return player, computer 
    else: 
     print "Error!\n Wrong input!" 
     return None, None 

player_choice, computer_choice = player_sign() 
0

Вам нужно позвонить player_sign (player_choice, computer_choice) в коде в конце

+0

Забыл добавить последнюю строку кода (это было в коде src). Все еще есть какая-то ошибка – Burdzi0

+0

Как и выше, это не сработает – Burdzi0