Python Forum
user input producing incorrect boolean
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
user input producing incorrect boolean
#1
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.
Reply
#2
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
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#3
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
Reply
#4
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}')
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#5
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'
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Using string input for boolean tronic72 3 635 Nov-01-2023, 07:48 AM
Last Post: Gribouillis
  WHILE LOOP NOT RETURNING USER INPUT AFTER ZerroDivisionError! HELP! ayodele_martins1 7 990 Oct-01-2023, 07:36 PM
Last Post: ayodele_martins1
  Code is returning the incorrect values. syntax error 007sonic 6 1,135 Jun-19-2023, 03:35 AM
Last Post: 007sonic
  restrict user input to numerical values MCL169 2 869 Apr-08-2023, 05:40 PM
Last Post: MCL169
  user input values into list of lists tauros73 3 1,023 Dec-29-2022, 05:54 PM
Last Post: deanhystad
Information How to take url in telegram bot user input and put it as an argument in a function? askfriends 0 1,026 Dec-25-2022, 03:00 PM
Last Post: askfriends
Question Take user input and split files using 7z in python askfriends 2 1,028 Dec-11-2022, 07:39 PM
Last Post: snippsat
Sad how to validate user input from database johnconar 3 1,837 Sep-11-2022, 12:36 PM
Last Post: ndc85430
  How to split the input taken from user into a single character? mHosseinDS86 3 1,137 Aug-17-2022, 12:43 PM
Last Post: Pedroski55
  Filter and str.isdigit producing an error tester_V 5 1,852 Aug-12-2022, 07:50 AM
Last Post: Gribouillis

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020