Annie Petrova
Annie Petrova

Reputation: 43

How to display an integer many times

I'd like to create a function that add 2 to an integer as much as we want. It would look like that:

>>> n = 3 
>>> add_two(n)
Would you like to add a two to n ? Yes
The new n is 5
Would you like to add a two to n ? Yes
the new n is 7
Would you like to add a two to n ? No

Can anyone help me please ? I don't how I can print the sentence without recalling the function.

Upvotes: 0

Views: 147

Answers (4)

queste
queste

Reputation: 310

The above answer describes in detail what to do and why, if you're looking for very simple beginner-type code that covers your requirements, try this:

n = 3

while True:
    inp = input("Would you like to add 2 to n? Enter 'yes'/'no'. To exit, type 'end' ")
    if inp == "yes":
        n = n + 2
    elif inp == "no":
        None
    elif inp == "end":      # if the user wants to exit the loop
        break
    else:
        print("Error in input")     # simple input error handling
    print("The new n is: ", n)

Upvotes: 1

paxdiablo
paxdiablo

Reputation: 881563

The idea is to use a while loop within your function that continues to add two each time you tell it to. Otherwise, it exits.

Given that knowledge, I'd suggest trying it yourself first but I'll provide a solution below that you can compare yours against.


That solution could be as simple as:

while input("Would you like to add a two to n ?") == "Yes":
    n += 2
    print(f"the new n is {n}")

But, since I rarely miss an opportunity to improve on code, I'll provide a more sophisticated solution as well, with the following differences:

  • It prints the starting number before anything else;
  • It allows an arbitrary number to be added, defaulting to two if none provided;
  • The output text is slightly more human-friendly;
  • It requires a yes or no answer (actually anything starting with upper or lower-case y or n will do, everything else is ignored and the question is re-asked).
def add_two(number, delta = 2):
    print(f"The initial number is {number}")

    # Loop forever, relying on break to finish adding.

    while True:
        # Ensure responses are yes or no only (first letter, any case).

        response = ""
        while response not in ["y", "n"]:
            response = input(f"Would you like to add {delta} to the number? ")[:1].lower()

        # Finish up if 'no' selected.

        if response == "n":
            break

        # Otherwise, add value, print it, and continue.

        number += delta
        print(f"The new number is {number}")

# Incredibly basic/deficient test harness :-)

add_two(2)

Upvotes: 1

Ade_1
Ade_1

Reputation: 1486

You can wrap it in a function. The function breaks once the yes condition is not met

def addd(n):
    while n:
        inp = input('would like to add 2 to n:' )
        if inp.lower() == 'yes':
            n = n + 2
            print(f'The new n is {n}')
        else:
            return

addd(10)

Upvotes: -1

Ramayana 3
Ramayana 3

Reputation: 131

You can use looping in your add_two() function. So, your function can print the sentence without recalling the function.

Upvotes: 1

Related Questions