Same input 2 different results


Keywords:python 


Question: 

I'm extremly new to programming, and I hope someone could help me. I'm trying to make a game where 2 players need to input words based on the last 2 letters of the word the other player placed into. I got that part to work, but I cannot get the part which decides the winner. It's the same 2 elif statements but they should print out different results.

Ex. P1: banana P2: narnia P1:ian P2:animal So basically when one of the players fails to accomplish the task of matching the last 2 letters they lose the game

 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

2 Answers: 

I think the problem is in your conditional if first[-2:] == second[:2] and first and second not in used_words: because and first basically is testing that first is not an empty string, so change it to if first[-2:] == second[:2] and first not in used_words and second not in used_words:. However, there are other change that should make in order to achiever what you want:

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


You should change your comparison scenario actually

 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