Creating a conditional loop with outputs

Question:

Mad Libs are activities that have a person provide various words, which are then used to complete a short story in unexpected (and hopefully funny) ways.

Write a program that takes a string and integer as input, and outputs a sentence using those items as below. The program repeats until the input string is quit.

Ex: If the input is:

apples 5
shoes 2
quit 0
the output is:

Eating 5 apples a day keeps the doctor away.
Eating 2 shoes a day keeps the doctor away.
Note: This is a lab from a previous chapter that now requires the use of a loop.

my code:

user_text = input().split()
word = (user_text[0])
number = (user_text[1])

if word != 'quit':
    print('Eating {} {} a day keeps the doctor away.'.format(number, word))
    user_text= input()

outputs: Eating 5 apples a day keeps the doctor away.

Asked By: Daniel Gardner

||

Answers:

You are not looping, so your program will only ask for input once, and end. If you want to keep inputting data, and printing new words, you should do the following:

word = ""

while True:
    user_text = input().split()
    word = (user_text[0])
    if word == 'quit':
        break
        
    number = (user_text[1])
    print('Eating {} {} a day keeps the doctor away.'.format(number, word))

As you can see by the code, while the user doesn’t input the word quit, the program will ask for a new input, and print a new sentence.

Answered By: omiguelgomes

Here is another very similar approach to this lab. Some school professors disapprove of using the while True: approach due to infinite loops, so here is a way around it.

user_input = input().split()
word = user_input[0]
number = user_input[1]

while (word != "quit"):
    print("Eating {0} {1} a day keeps the doctor away.".format(number, word))
    user_input = input().split()
    word = user_input[0]
    number = user_input[1]
Answered By: John B.