Maks244
Maks244

Reputation: 59

How to check if this input is a negative number

I'm new to python and want to make a program that generates Pi with the given decimal numbers. Problem is that I don't know how to check if the user has inputted a positive number.

This is the function that generates Pi (I don't know for sure how it works)

def PiBerekening(limiet):

q = 1
r = 0
t = 1
k = 1
n = 3
l = 3

decimaal = limiet
teller = 0

while teller != decimaal + 1:
    if 4 * q + r - t < n * t:
        # yield digit
        yield n
        # insert period after first digit
        if teller == 0:
            yield '.'
        # end
        if decimaal == teller:
            print('')
            break
        teller += 1
        nr = 10 * (r - n * t)
        n = ((10 * (3 * q + r)) // t) - 10 * n
        q *= 10
        r = nr
    else:
        nr = (2 * q + r) * l
        nn = (q * (7 * k) + 2 + (r * l)) // (t * l)
        q *= k
        t *= l
        l += 2
        k += 1
        n = nn
        r = nr

And this is how I ask the user how many decimals he wants to see

while not verlaatloop:
    try:
        pi_cijfers = PiBerekening(int(input("With how many decimals would you like to calculate Pi?")))
        assert pi_cijfer > 0  # This is one of the things I've tried but I get the "NameError: name 'pi_cijfer' is not defined" error and I don't know what to do to check if the inputted number is negative
    except ValueError:
        print("This isn't a valid number, try again")
    except AssertionError:
        print("This number is negative, try again")
    else:
        verlaatloop = True

This is how I show the calculated Pi

    for pi_cijfer in pi_cijfers:
    print(pi_cijfer, end='')

Upvotes: 1

Views: 300

Answers (1)

Rajat Mishra
Rajat Mishra

Reputation: 3770

You can first validate the input and then pass it to the PiBerekening function. Something like this:

while not verlaatloop:
    try:
        no_decimals = int(input("With how many decimals would you like to calculate Pi?"))
        if no_decimals > 0:
           pi_cijfers = PiBerekening(no_decimals)
        #assert pi_cijfer > 0  # This is one of the things I've tried but I get the "NameError: name 'pi_cijfer' is not defined" error and I don't know what to do to check if the inputted number is negative
    except ValueError:
        print("This isn't a valid number, try again")
    except AssertionError:
        print("This number is negative, try again")
    else:
        verlaatloop = True

Upvotes: 2

Related Questions