简体   繁体   中英

Invalid syntax error, but I can't spot it? (Python)

Here is my code, the syntax error is on line 18. I am struggling to understand why I am getting this error.

from visual import *

def Efield(pos, charge)

    """
    Calculate electric field due to point charge

    Inputs
    ======

    pos        - Position where the E field is required (vector)
    charge.pos - Position of the charge (vector)
    charge.q   - Charge (float)

    Returns
    =======

    The electric field vector
    """

    r = vector(charge.pos) - vector(pos)  # Vector from pos to chargepos

    E = float(q) * r / abs(r)**3  # Coulomb's law

    return E

Create some charges

charge1 = sphere(pos=(0,2,0), q=1, radius=0.2, color=color.red)    # Positive charge
charge2 = sphere(pos=(0,-2,0), q=-1, radius=0.2, color=color.blue)  # Negative charge

Generate arrows at random locations

random.seed(1234)  # Specify a random seed

n = 500
for i in range(n):
    x = random.uniform(-4 4)
    y = random.uniform(-4,4)
    z = random.uniform(-4,4)

    pos = vector(x,y,z)

    # Make sure pos is not too close to both positive and negative charge
    if abs(pos - charge1.pos) > 1 and abs(pos - charge2.pos) > 1:
    # Create an arrow if it's far enough from both charges
    a = arrow(pos=pos, axis= Efield(pos, charge1) + Efield(pos,charge1))

You are missing a : after def Effield(pos, charge)

You are also missing a comma on the line:

x = random.uniform(-4 4)

should be

x = random.uniform(-4, 4)

Also this function is not indented at all, which will throw:

IndentationError: expected an indented block

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM