How can I create a loop with my conditions

Question:

i am looking for help. We need to write a program that prints all numbers in the range of (n -20,n + 20). In addition, the program asks you beforehand to input a number. If that number is not even or multiple of 10, you need to take a guess again. Only if the number is even and multiple by 10 the program prints the range aforementioned. I struggle with that.

I came up with that solution:

    i = int(input("please enter a number: "))
    while (i % 10 == 0) and ((i % 2) == 0):
        x = 20
        while (x >= 0):
            print(i - x)
            x = x - 1
        break

but it will only print the range n-20 and not +20 and it also won’t ask you again if you input a false number.

I know there is also the possibility to use for I in range() but I am at a loss for ideas at the moment.

Thank you!

Asked By: Max

||

Answers:

You can simply do:

while True:
  i = int(input("please enter a number: "))
  if i % 10 == 0:
       for x in range(i-20,i+21):
           print(x)
       break

It will keep on asking until it satisfies the condition.

Answered By: God Is One

Better make use of range, something like:

x = 20
for number in range(i - x, i + x + 1):
    print(number)

Note: range(1, 5) creates a generator which yields the numbers 1 to 4, excluding 5. Thus the i + 20 + 1.

Answered By: faemmi

Doing it the hard way: you want to start from i-20, so:

n = i - 20

and go to i+20, so:

while n < i+20:
    print(n)
    n += 1

All there is to it.

Or, the easy way, aka one liner using range

print(range(i-20, i+20), sep="n")

Start with

i = 1
while not (i % 10 == 0):
    i = int(input("please enter a number: "))

to keep asking until valid input is entered and the problem is solved.

Answered By: matszwecja
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.