continuous number increment until user input == 'specific input' Python

Question:

First to say I am new to ‘asking questions’ in stackoverflow so I apologize if my question is not in the right category or another similar question has been asked already. I tried to find a relevant question but I couldn’t. Mine is a little specific which will serve me as an example for future programming.

The flow of the simple program I am trying to create is:

  • Having a start number of for example 0

    1. the number gets incremented by 1 until the number has incremented with 100 numbers at which point..
    2. Program asks “Y/N” if Yes then steps 1 and 2 repeat (Every time this process repeats the number should add another 100 on it self. So for example the second repetition will start from 100 and not from 0) if no the step 3
    3. The program prints the largest number that was reached

This is my code:

def creeper (number, growth):
    while number <= growth:
        print (number)
        number += 1
    return (number)

diff = 100 #represents the limit of each incrementation 
print('lets start')
old_num = creeper(0, diff)
while True:
    inp = str(input('Yy/Nn: '))
    print(inp)
    if inp == 'Y' or 'y':
        new_num = creeper(old_num, diff)
        old_num = new_num
    else:
        print(new_num)
        break
input("Did we get to here? Press enter to exit then: ") 

In particular I am asking about this section:

if inp == 'Y' or 'y':
    new_num = creeper(old_num, diff)
    old_num = new_num
else:
    print(new_num)
    break

It seems that python reads correctly what is the input but it doesn’t go back to step 1. Actually it doesn’t even get to step 3. I can’t understand how this particular chunk of code works:

if inp == 'Y' or 'y':

I appreciate any response to my question.
Thanks!

Asked By: Gri

||

Answers:

I see at least two problems:

A. As many people have said in the comments, in order to work properly, the if statement must be written differently, e.g.:

if inp == 'y' or inp == 'Y'

or this way:

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

Check those links from the comments, for example: this post

The boolean value for ‘y’ is always True, thus the else statement will never be executed.


B. Second problem is in your else statement. You have to check against the old_num because the new_num might not be created yet (in case it is the first iteration).

Answered By: kmartin
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.