0

このプログラムでは、Python を使用しています。

ロボットをランダムな位置に動かし、360 度回転させることになっています。3 つの光センサーすべてから 15 の読み取り値を 3 つの異なるリストに割り当てる必要があります。

次に、各センサーからの光の値の平均を計算し、各センサーの最大値と最小値を決定する必要があります。

次に、3 つのセンサーすべてからの光の値の平均を計算して表示し、周囲の光の平均値と、明るすぎるか暗すぎるかを通知する必要があります。

これをすべて実行したと思いますが、プログラムが機能しません。たとえば、私のロボットはランダムな位置に移動してから 360 度回転しますが、その後プログラムが停止するだけで、その理由がわかりません。

次のようなエラーが表示されます。

max() arg is an empty sequence 

誰かが私が間違っていることを理解するのを手伝ってくれたら、それは素晴らしいことです! どうもありがとう!!!

これは私のプログラムです:

from myro import *
init("simulator")

def pressC():
    entry = " "
    while(entry != "c"):
        entry = raw_input("Press c to continue: ")

def movement():
    rightSensor = []
    centerSensor = []
    leftSensor = []
    return rightSensor
    return centerSensor
    return leftSensor

    for index in range(1,15):
        rightSensor.append(getLight("right"))
        centerSensor.append(getLight("center"))
        leftSensor.append(getLight("left"))

def average():
    rightSensor = []
    centerSensor = []
    leftSensor = []
    sumRight = 0
    sumCenter = 0
    sumLeft = 0

    for index in range(len(rightSensor)):
        sumRight = sumRight + rightSensor[index]
        averageRight = sumRight / 15

    for index in range(len(centerSensor)):
        sumCenter = sumCenter + centerSensor[index]
        averageCenter = sumCenter / 15
        while averageCenter > 100:
            speak("Its too dark. I need light")
        else:
            speak("Its so bright")

    for index in range(len(leftSensor)):
        sumLeft = sumLeft + leftSensor[index]
        averageLeft = sumLeft / 15

    max(rightSensor)
    min(rightSensor)
    max(centerSensor)
    min(centerSensor)
    max(leftSensor)
    min(leftSensor)

    print "Left Avg: " + str(averageLeft), "Max: " + str(leftSensor), "Min: " + str(leftSensor)
    print "Center Avg: " + str(averageCenter), "Max: " + str(centerSensor), "Min: " + str(centerSensor)
    print "Right Avg: " + str(averageRight), "Max: " + str(rightSensor), "Min: " + str(rightSensor)


def main():
    pressC()
    forward(1,1)
    rotate(1)
    wait(7)
    stop()
    movement()
    average()

main()
4

1 に答える 1

2

これは、コードの関連部分です。

def average():
    rightSensor = []
    (do stuff that does not change rightSensor)
    max(rightSensor)

それなら空いているのも不思議ではありません。

于 2015-05-20T22:21:23.427 に答える