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'