Python: ' ' is not defined

大憨熊 提交于 2019-12-04 05:51:27

问题


Here is my code:

# This program makes the robot calculate the average amount of light in a simulated room

from myro import *
init("simulator")

from random import*

def pressC():
    """ Wait for "c" to be entered from the keyboard in the Python shell """
    entry = " "
    while(entry != "c"):
        entry = raw_input("Press c to continue. ")
    print("Thank you. ")
    print

def randomPosition():
    """ This gets the robot to drive to a random position """
    result = randint(1, 2)
    if(result == 1):
        forward(random(), random())
    if(result == 2):
        backward(random(), random())

def scan():
    """ This allows the robot to rotate and print the numbers that each light sensors obtains """
    leftLightSeries = [0,0,0,0,0,0]
    centerLightSeries = [0,0,0,0,0,0]
    rightLightSeries = [0,0,0,0,0,0]
    for index in range(1,6):
        leftLight = getLight("left")
        leftLightSeries[index] = leftLightSeries[index] + leftLight
        centerLight = getLight("center")
        centerLightSeries[index] = centerLightSeries[index] + centerLight
        rightLight = getLight("right")
        rightLightSeries[index] = rightLightSeries[index] + rightLight
        turnRight(.5,2.739)
    return leftLightSeries
    return centerLightSeries
    return rightLightSeries

def printResults():
    """ This function prints the results of the dice roll simulation."""
    print " Average Light Levels "
    print "    L      C      R "
    print "========================="
    for index in range(1, 6):
        print str(index) + " " + str(leftLightSeries[index]) + " " + str(centerLightSeries[index]) + " " + str(rightLightSeries[index])

def main():
    senses()
    pressC()
    randomPosition()
    scan() 
    printResults()

main()

So, I am getting this error when I run my program.

NameError: global name 'leftLightSeries' is not defined

I understand that I must be doing something wrong related to the return statement. I'm not sure if I can only return one variable at the end of a user-defined function. If that were to be true, then I should probably separate the scan(): function. Anyways, I would appreciate any help on how to fix this error. Also, this is the result that I am looking for when I successfully complete my program: Click Here

I am looking to complete the average values like the picture shows, but I am not worried about them at this point, only the list of values from the light sensors. I do not need to reach those exact numbers, the numbers will vary in the simulator.


回答1:


If you want to return multiple items from scan(), don't use three separate return statements. Instead, do this:

return leftLightSeries, centerLightSeries, rightLightSeries

Also, when you call the function, you have to assign variable(s) to the returned values; it won't automatically create new local variables with the same names. So in main, call scan() like this:

leftLightSeries, centerLightSeries, rightLightSeries = scan()


来源:https://stackoverflow.com/questions/38404825/python-is-not-defined

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