Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

User input to stop an if statement within a for loop

I am new to programming and have gotten stuck on a small project. I am trying to have it where I can iterate through a dictionary and determine if the user wants to make an edit. If the user wants to make an edit I want to update the dictionary, otherwise if they do not want to edit the specified section that the program moves on to the next section. I currently have an if statement inside of a for loop to complete this task. The for loop is iterating through the various pieces of a dictionary and the if statement is determining if the user wants to make an edit to the specified portion of the dictionary ( category, recipe name, cooktime, ingredients, instructions ). Currently even if the user inputs the value to say no it continues as if they said yes. What can I do to correct the logic in my code so when the user enters "n" or "N" that it skips over that section of the for loop and continues forward? Below is a snippet of the code. Thank you.

recipes = {1: {'Category' :'Dessert', 'Recipe Name' :' PB Bannana Nice Cream', 'Cooktime' : '15 minutes', 'Ingredients' : '2 frozen bannanas, 2 tablespoons peanut butter powder',
 'Instructions' : 'Place frozen bananas into blender with peanut butter powder. Process until creamy'},
  2: {'Category' : 'Lunch' , 'Recipe Name' : 'PBJ', 'Cooktime' : '5 minutes', 'Ingredients' : '2 pieces of bread, 2 tablespoons peanut butter, 1 tablespoon jelly or jam',
   'Instrutions' :'Spread PB on bread, spread jelly on PB'}}

for number in recipes:
    print(f"\n{number}")
    for key, value in recipes[number].items():
        print(f"\t{key} : {value}")

edit_selection = input('\nPlease select the number that cooresponds to the recipe that you would like to edit: ')
print("")
for key, value in recipes[int(edit_selection)].items():
    print(f"\t{key} : {value}")

for key in recipes[int(edit_selection)]:
    change_choice = input(f"\nWould you like to edit the recipies {key}?  (Y or N) ")
    if change_choice == 'y' or 'Y' or "y" or "Y":
        print(change_choice)
        new_value =input(f"Please enter the new value for the {key}: ")
        recipes[int(edit_selection)].update({f'{key}' : f"{new_value}"})
    elif change_choice == 'n' or 'N':
        break
print(recipes[int(edit_selection)])

>Solution :

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

As you might have guessed, the problem is in your if condition. Change it to

if change_choice == 'y' or change_choice == 'Y':

and

elif change_choice == 'n' or change_choice == 'N':

and it should work fine.

If you don’t want to have to repeat the comparison with ==, you can instead check whether your input variable’s value is in a sequence type (tuple or list, for example) containing all the strings you wish to include. This comparison:

if change_choice in ('y', 'Y')

is equivalent to the above.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading