Python expected an indented block
Question: I am a newbie to Python and would like to genereate some numbers according to
geometric distribution. i found this code on Internet but isn´t work:

    
    
      import random
    from math import ceil, log
    
    def geometric(p):
    
    # p should be in (0.0, 1.0].
    if ((p <= 0.0) or (p >=1.0)):
    raise ValueError("p must be in the interval (0.0, 1.0]")
    elif p == 1.0:
    # If p is exactly 1.0, then the only possible generated value is 1.
    # Recognizing this case early means that we can avoid a log(0.0) later.
    # The exact floating point comparison should be fine. log(eps) works just
    # dandy.
    return 1
    
    # random() returns a number in [0, 1). The log() function does not
    # like 0.
    U = 1.0 - random.random()
    
    # Find the corresponding geometric variate by inverting the uniform variate.
    G = int(ceil(log(U) / log(1.0 - p)))
    return G
    
    p=1.0/2.0
    for i in range(10):
    print geometric(p)
    

When I try to run it tells me the following error:

    
    
        File "test.py", line 8
        if (p <= 0.0) or (p >=1.0):
         ^
    IndentationError: expected an indented block
    

What is the error and how I can fix it?


Answer: In Python, indentation is significant. [PEP
8](http://www.python.org/dev/peps/pep-0008/) covers good indentation style.

To take one of your functions as an example, it should look like this:

    
    
    def geometric(p):
        # p should be in (0.0, 1.0].
        if ((p <= 0.0) or (p >=1.0)):
            raise ValueError("p must be in the interval (0.0, 1.0]")
        elif p == 1.0:
            # If p is exactly 1.0, then the only possible generated value is 1.
            # Recognizing this case early means that we can avoid a log(0.0) later.
            # The exact floating point comparison should be fine. log(eps) works just
            # dandy.
            return 1
    

If it's not indented properly, it's not valid Python code.

