Python Forum

Full Version: user input producing incorrect boolean
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello! I am brand new Python but have been coding VBA for a few years. Running through my introductory labs, I am running into a problem using the Boolean test. No errors are thrown but the boolean result is incorrect and I am following the syntax correctly to the best of my limited knowledge.
I defined the variable correctly:
menu = "salad, pasta, sandwich, pizza, drinks, dessert"
print('pizza' in menu)
Output:
True
When I introduce an input variable, something is busting.
menu_ask = input("What would you like to order? ")
What would you like to order? pizza
print(menu_ask,"in menu =",'menu_ask' in menu)
Output:
pizza in menu = False
Can anyone help me out here? This seems so straight forward. Thank you for any consideration.
it should be
print(menu_ask, "in menu =", menu_ask in menu)
now, couple of advises:
at the moment menu is a str. it's better it to be list/tuple with each item being a str, in this case you can check for exact match. At the moment if your search term is part of another, bigger str, it will still give you True

use string formmating or f-strings to construct the print output
Thank you Buran. I understand that and will keep that in consideration as I progress. As of now, I am at the very rudimentary levels so just want to ensure syntax and logic align. I'm aware of string formatting (.upper(), .lower(), etc.) but wanted to keep the ex as basic as possible. The class has not addressed f-strings or lists yet. I still don't understand why my program is incorrect. The lab requires me to:
Quote:get user input for add_item variable
new_menu use string addition to add add_item to menu
print the new_menu
testing
check if an item is on the menu, check for previous items and the item you added
# add to menu
# Testing Add to Menu - create user input to search for an item on the new menu
print(menu)
add_item = input("What would you like to add? ")
new_menu = menu + ", " + add_item
Output:
salad, pasta, sandwich, pizza, drinks, dessert What would you like to add? soup
print(new_menu)
menu_ask = input("What would you like to order from the new menu? ")
print(menu_ask, "in the new menu = ",menu_ask in menu)
Output:
salad, pasta, sandwich, pizza, drinks, dessert, soup What would you like to order from the new menu? soup soup in the new menu = False
In first snippet it was not working because you were checking that string 'menu_ask' is in the menu. Note, not the variable menus_ask which has value pizza, but literally the string 'menu_ask'

In the second one you introduce different error.
you create new variable new_menu which has 'soup` as part of the string
still you check in menu, which does not have soup
you want to do
menu = menu + ", " + add_item

I see that assignment indeed ask menu to be string keep the list for future

string formatting is not what you think
print('{} in the new menu = {}'.format(men_ask, menu_ask in menu))
or with f-strings
print(f'{menu_ask} in the new menu = {menu_ask in menu}')
Thanks again. I fixed the syntax and it works now. Ok. I see about the string formatting - getting a little ahead of myself. I'm a little confused as to why print(menu_ask,"in the new menu =",menu_ask in new_menu) produces soup in the new menu = True however

paint_colors = "red, blud, green, black, orange, pink"
print("Red in paint colors = ", red in paint_colors)
where red in paint_colors throws a name error

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-35-2f9734434943> in <module>()
      1 paint_colors = "red, blud, green, black, orange, pink"
----> 2 print("Red in paint colors = ", red in paint_colors)

NameError: name 'red' is not defined
The instructor specifies that when using red in paint_colors, red needs to be a str 'red'