Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

python if statement evaluation with multiple values

Tags:

python

I'm not exactly sure why but when I execute this section of code nothing happens.

while (True) :

    choice = str(input("Do you want to draw a spirograph? (Y/N) "))

    if choice == 'n' or 'N' :
        break

    elif choice == 'y' or 'Y' :    

       <CODE>

    else :
        print("Please enter a valid command.")
        choice = input("Do you want to draw a spirograph? (Y/N)")           
like image 641
Cal_9000 Avatar asked Mar 01 '26 03:03

Cal_9000


2 Answers

It won't work because the 'N' literal always evaluates to True within your if statement.

Your if condition currently stands as if choice == 'n' or 'N' :, which is equivalent to if (choice == 'n') or ('N'), which will always evaluate to True irrespective of the value of variable choice, since the literal 'N' always evaluates to True.

Instead, use one of the following

  • if choice == 'n' or choice == 'N' :
  • if choice in 'nN' :
  • if choice in ('n', 'N') :

The same holds for your elif block as well. You can read more about Truth Value testing here.

like image 81
Anshul Goyal Avatar answered Mar 03 '26 15:03

Anshul Goyal


This expression doesn't do what you want:

choice == 'n' or 'N'

It is interpretted as this:

(choice == 'n') or 'N'

You might want to try this instead:

choice in 'nN'
like image 39
Nick Russo Avatar answered Mar 03 '26 13:03

Nick Russo