Python expected an indented block

痴心易碎 提交于 2019-11-29 18:17:00

In Python, indentation is significant. PEP 8 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.

Correct syntax (indent for each block. Most of those start after lines ending in ":"):

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)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!