Один и тот же ввод 2 разных результата

Я очень новичок в программировании, и я надеюсь, что кто-то может мне помочь. Я пытаюсь создать игру, в которой 2 игрока должны вводить слова на основе двух последних букв слова, в которое вставил другой игрок. У меня работает эта часть, но я не могу получить ту часть, которая определяет победителя. Это те же 2 оператора elif, но они должны выводить разные результаты.

Бывший. P1: банан P2: narnia P1:ian P2:животное Итак, в основном, когда один из игроков не может выполнить задание на совпадение последних 2 букв, он проигрывает игру.

 used_words=[]

 while True:
     player_one=raw_input("Player one \n")
     first= list(player_one)
     player_two=raw_input("Player two \n")
     second=list(player_two)

     if first[-2:] == second[:2] and first and second not in used_words:
         used_words.append(player_one)
         used_words.append(player_two)
         continue

     elif first[-2:] != second[:2]:
         print "Player one wins! \n"
         print "The word you had to match was: ", second
         break

     elif second[:2] != first[-2:]:
         print "Player two wins!"
         print "The word you had to match was: ", first
         break

    else:
         break

person kryleas    schedule 20.09.2017    source источник
comment
можешь объяснить свою игру примерами из 2 слов   -  person be_good_do_good    schedule 20.09.2017
comment
Итак, у вас есть те же два оператора elif. Как код может перейти ко второму elif, когда ваше условие выбирается в самом первом elif? 1 != 2 совпадает с 2 != 1 в программировании. и дает тот же результат True.   -  person user4359551    schedule 20.09.2017
comment
@be_good_do_good Бывший. P1: банан P2: нарния P1: ian P2: животное и т. д. Цель игры состоит в том, чтобы один из игроков не смог придумать слово, которое состоит из двух последних букв предыдущего слова.   -  person kryleas    schedule 20.09.2017
comment
@kyleas, можете ли вы привести пример того, что у вас есть, и ожидаемого результата?   -  person lmiguelvargasf    schedule 20.09.2017
comment
Вы должны получать входные данные на каждой итерации и сравнивать их с вашей историей.   -  person aLoneStrider    schedule 20.09.2017
comment
Одна из ваших ошибок, вероятно, заключается в том, что второй elif должен говорить second[-2:] != first[:2], но есть и другие проблемы.   -  person Jeremy McGibbon    schedule 20.09.2017
comment
@lmiguelvargasf P1: банан P2: Нарния P1: ian P2: животное Так что, в основном, когда один из игроков не может выполнить задачу по угадыванию двух последних букв, он проигрывает игру.   -  person kryleas    schedule 20.09.2017
comment
@lmiguelvargasf ваш формат в том формате, который я изначально хотел, так что да, ваш идеальный вариант, спасибо.   -  person kryleas    schedule 21.09.2017


Ответы (2)


Я думаю, проблема в вашем условном if first[-2:] == second[:2] and first and second not in used_words:, потому что and first в основном проверяет, что first не является пустой строкой, поэтому измените его на if first[-2:] == second[:2] and first not in used_words and second not in used_words:. Однако есть и другие изменения, которые следует внести, чтобы добиться того, чего вы хотите:

player_one = raw_input("Player one \n")
used_words = [player_one]

while True:
    player_two = raw_input("Player two \n")        

    if used_words[-1][-2:] != player_two[:2] and player_two not in used_words:
         print "Player one wins! \n"
         print "The word you had to match was: ", player_one
         break

    used_words.append(player_two)
    player_one = raw_input("Player one \n")

    if used_words[-1][-2:] != player_one[:2] and player_one not in used_words:
         print "Player two wins! \n"
         print "The word you had to match was: ", player_two
         break
person lmiguelvargasf    schedule 20.09.2017

Вы должны изменить свой сценарий сравнения на самом деле

 used_words=[]

 while True:
     word=raw_input("Enter sth \n")

     if(len(used_words) == 0):
         used_words.append(word)
         continue

     if(used_words[-1][-2:] == word[:2] and word not in used_words):
         used_words.append(word)

     elif(word in used_words):
         print "You lose! \n"
         print word, " is previously used"
         break

     elif(used_words[-1][-2:] != word[:2]):
         print "You lose! \n"
         print "The first two characters you had to start with was: ", used_words[-1][-2:]
         break
     else:
         break
person aLoneStrider    schedule 20.09.2017
comment
ДА! Это то, что я хотел. Тай! - person kryleas; 20.09.2017