Skip to content Skip to sidebar Skip to footer

Problems Understanding Conditions In If Statement Python

Hello i am a beginner in python programming and I have to write a rock paper scissor game. However the only strings that should be typed in are rock, scissor or paper. if i check

Solution 1:

It's a valid expression, just doesn't do what you might think it does:

if player1 andplayer2== 'rock' or 'paper' or 'scissor':

is checking several things:

playerplayer2== 'rock''paper''scissor'

A string is convertible to bool if its non-empty. So in this case 'paper' and 'scissor' both evaluate as True. Thus, we can rewrite your condition as the following, adding parenthesis for emphasis:

if  (player1 and player2 == 'rock') orTrueorTrue:

Which is equivalent to

ifTrue:

Probably not what you want to check.

Solution 2:

Your if statement reads:

if player1 andplayer2== 'rock' or 'paper' or 'scissor':

Python allows you to omit parentheses, but this is how it is parsed:

if (player1) and (player2 == 'rock') or ('paper') or ('scissor'):

Meaning, it checks for the truthiness of player1, whether player2 is 'rock', or whether 'paper' or 'scissor' are truthy.

In Python, a non-empty string is always truthy meaning 'paper' or 'scissor' will always be True.

What you actually want is something like

if player1 in('rock', 'paper', 'scissor') and player2 in('rock', 'paper', 'scissor')

Post a Comment for "Problems Understanding Conditions In If Statement Python"