Quantum mechanics tells us that a molecule is only allowed to have specific, discrete amounts of internal energy. The 'rigid rotor model', a model for describing rotations, tells us that the amount of rotational energy a molecule can have is given by:  

`E =  B * J * (J + 1)`, 

where J is the state the molecule is in, and B is the 'rotational constant' (specific to the molecular species).

Write a function that returns an array of allowed energies for levels between Jmin and Jmax.

Notes:

* return empty array if Jmin is greater than Jmax (as it make no sense).
* Jmin, Jmax are integers.
* physically B must be positive, so return empty array if B <= 0

Difficulty: introductory

Starter code:

def rot_energies(B, Jmin, Jmax):
	

Solutions:
def rot_energies(B, Jmin, Jmax):
    return [B * J * (J + 1) for J in range(Jmin, Jmax + 1)] if B > 0 else []

def rot_energies(rot, energy_min, energy_max):
    # We're programmers, not scientists or mathematicians, we can use legible variable names.
    if rot <= 0:
        return []
    else:
        return [rot * energy * (energy + 1) for energy in range(energy_min, energy_max + 1)]

def rot_energies(B, Jmin, Jmax):
    return [B * j * (j + 1) for j in range(Jmin, Jmax + 1)] if B > 0 else []

def rot_energies(B, Jmin, Jmax):
    return [B * J * (J + 1) for J in range(Jmin, Jmax + 1)] * (B > 0)

def rot_energies(B, Jmin, Jmax):
    if B<=0:
        return []
    return [B * J * (J + 1) for J in range(Jmin,Jmax+1)]

def rot_energies(B, Jmin, Jmax):
    if B < 0:
        return []
    return [B * J * (J + 1) for J in range(Jmin, Jmax + 1)]

def rot_energies(B, Jmin, Jmax):
    return [] if B <= 0 else [B * I * (I + 1) for I in range(Jmin, Jmax + 1)]

def E(B, J):
    return B*J*(J+1)
    
def rot_energies(B, Jmin, Jmax):
    if B < 0 or Jmax < Jmin: return []
    return [E(B, j) for j in range(Jmin, Jmax+1)]


def rot_energies(B, Jmin, Jmax):
    result = []
    if B >= 0: 
      for a in range(Jmin, Jmax+1):
        result.append(B * a * (a+1))
    return result

def rot_energies(B, Jmin, Jmax):
    return [] if B < 0 or Jmin > Jmax else [B * i * (i + 1) for i in range(Jmin, Jmax + 1)]