I’m a beginner currently working on a small python project. It’s a dice game in which there is player 1 and player 2. Players take turns to roll the dice and a game is 10 rounds in total(5 rounds for each player). The player with the highest number of points wins.
I am trying to validate the first input so that when for example, the player enters a number instead of “Higher” or “Lower”, the program should respond with ‘Invalid input, please respond with “Higher” or “Lower”’.
Here’s my code so far
import random
goAgain = "y"
activePlayer = 1
player1Score = 0
player2Score = 0
maxGuesses = 9
while (goAgain == "y"):
randNum = random.randint(1, 10)
print(randNum)
storedAnswer = input("Will you roll higher or lower?: ")
while(storedAnswer.strip() != 'higher' or storedAnswer.strip() != 'lower'):
print('Invalid input, please respond with "Higher" or "Lower"')
storedAnswer = input("Will you roll higher or lower?: ")
randNum2 = random.randint(1, 10)
print(randNum2)
if(storedAnswer.strip() == "lower" and randNum2 < randNum):
if(activePlayer == 1):
player1Score+=1
else:
player2Score+=1
print("You Win!")
maxGuesses+=1
# print(player1Score)
# print(player2Score)
elif (storedAnswer.strip() == "lower" and randNum2 > randNum):
print("You Lose!")
maxGuesses+=1
# print(player1Score)
# print(player2Score)
elif (storedAnswer.strip() == "higher" and randNum2 > randNum):
if(activePlayer == 1):
player1Score+=1
else:
player2Score+=1
print("You Win!")
maxGuesses+=1
# print(player1Score)
# print(player2Score)
elif (storedAnswer.strip() == "higher" and randNum2 < randNum):
print("You Lose!")
maxGuesses+=1
# print(player1Score)
# print(player2Score)
elif(randNum2 == randNum):
print("Draw!")
maxGuesses+=1
print(player1Score)
print(player2Score)
if(activePlayer == 1):
activePlayer = 2
else:
activePlayer = 1
if(maxGuesses == 10):
if(player1Score > player2Score):
print("Player 1 wins!")
elif(player2Score > player1Score):
print("Player 2 wins!")
else:
print("DRAW!")
break
else:
goAgain = input("Do you want to play again: ")
The problem that occurs is that instead it print ‘invalid input’ regardless of whether the condition is true or not.
Advertisement
Answer
A value is always not equal one or another value.
answer = input("Will you roll higher or lower?: ")
while answer.strip() not in ['higher', 'lower']:
print('Invalid input, please respond with "Higher" or "Lower"')
answer = input("Will you roll higher or lower?: ")