Невозможно назначить оператору. Несколько присваиваний в операторе if на python - PullRequest
0 голосов
/ 25 декабря 2018

В 4-м элифе заканчивается ошибка, которую нельзя назначить оператору. Я пытаюсь разработать игру в крестики-нолики и назначаю игроков X и 0 на основе их выбора. не могу назначить оператору

def player_input(player):
    marker = ''
    while(marker != 'X' and marker != '0'):
        marker = input('{},choose X or 0:'.format(player))

    if(player == 'Player1' and marker == 'X'):
        temp_player1 = 'Player1' and player1_marker = 'X' and temp_player2 = 'Player2' and player2_marker = '0'
    elif(player == 'Player1' and marker == '0'):
        temp_player1 = 'Player1' and player1_marker = '0' and temp_player2 = 'Player2' and player2_marker = 'X'
    elif(player == 'Player2' and marker == 'X'):
        temp_player1 = 'Player1' and player1_marker = '0' and temp_player2 = 'Player2' and player2_marker = 'X'
    elif(player == 'Player2' and marker == '0'):
        temp_player1 = 'Player1' and player1_marker = 'X' and temp_player2 = 'Player2' and player2_marker = '0'
    else:
        pass

    return(temp_player1,player1_marker,temp_player2,player2_marker)

Ответы [ 3 ]

0 голосов
/ 25 декабря 2018

удалить оператор and в каждом операторе if и заменить их точкой с запятой;as и является оператором, и это расстраивает python для назначения и переменной

исправленный код будет:

if(player == 'Player1' and marker == 'X'):
    temp_player1 = 'Player1' ;  player1_marker = 'X' ; temp_player2 = 'Player2' ; player2_marker = '0'
elif(player == 'Player1' and marker == '0'):
    temp_player1 = 'Player1' ; player1_marker = '0'; temp_player2 = 'Player2' ; player2_marker = 'X'
elif(player == 'Player2' and marker == 'X'):
    temp_player1 = 'Player1' ; player1_marker = '0' ; temp_player2 = 'Player2' ;player2_marker = 'X'
elif(player == 'Player2' and marker == '0'):
    temp_player1 = 'player1'; player1_marker = 'X' ;temp_player2 = 'Player2'; player2_marker = '0'
else:
    pass
0 голосов
/ 25 декабря 2018

разделяйте ваши назначения на разные строки:

if(player == 'Player1' and marker == 'X'):
    temp_player1 = 'Player1'
    player1_marker = 'X'
    temp_player2 = 'Player2'
    player2_marker = '0'
elif(player == 'Player1' and marker == '0'):
    temp_player1 = 'Player1'
    player1_marker = '0'
    temp_player2 = 'Player2'
    player2_marker = 'X'
elif(player == 'Player2' and marker == 'X'):
    temp_player1 = 'Player1'
    player1_marker = '0'
    temp_player2 = 'Player2'
    player2_marker = 'X'
elif(player == 'Player2' and marker == '0'):
    temp_player1 = 'player1'
    player1_marker = 'X'
    temp_player2 = 'Player2'
    player2_marker = '0'
else:
    pass

вы должны прочитать о том, как работает отступ в python, когда несколько операторов в одной строке не очень распространены для удобства чтения

0 голосов
/ 25 декабря 2018

Все ваши строки назначения имеют недопустимый синтаксис.and является логическим оператором, и вы не можете смешивать присваивание в середине выражения.Если вы действительно хотите назначить все в одной строке, используйте ;:

temp_player1 = 'Player1'; player1_marker = 'X'; temp_player2 = 'Player2'; player2_marker = '0'

Это относится ко всем вашим if s.

...