Функция Python несколько операторов IF? - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть вопрос относительно циклов и функций, поэтому есть список значений, которые в виде трех входных переменных, которые являются значениями, например, 0-5 или направление (запад, север и т. Д.), Я не уверен, правильно ли я использовал оператор If. Я сделал что-то не так с для команды цикла или функции?

Пример входных переменных массива, но в наборе данных нет заданного ограничения:

['Start', 'Bottom right', 1]['South', 1, 1], ['North', 3, 4], ['West', 4, 0], ['West', 2, 0], ['South', 3, 4]

Если я запущу функцию, она всегда даст мне функцию else и не будет следовать ни одной из команд.

enter image description here

def follow_path(a):
    legend()    #draw legend

    for draw in a:
        direction(a[0])
        location(a[1])
        choosetoken(a[2])


def location(corner):
    if corner == 'Top left':
        goto(0,600)
    if corner == 'Top right':
        goto(600,600)
    if corner == 'Bottom left':
        home()
    if corner == 'Bottom right':
        goto(600,0)
    if corner == 'Center':
        goto(300,300)
    if corner == 1:
        forward(100)
    if corner == 2:
        forward(200)
    if corner == 3:
        forward(300)
    if corner == 4:
        forward(400)
    if corner == 5:
        forward(500)
    else:
        print ("Check input '1' is correct or not")

def direction(direction):
    if direction == 'West':
        setheading(180)
    if direction == 'East':
        setheading(0)
    if direction == 'North':
        setheading(90)
    if direction == 'West':
        setheading(270)
    if direction == 'Start':
        home()   
    else:
        print ("Check input '0' is correct or not")

def choosetoken(a): #Draw shapes
    if a == 0:
        youtube()
    elif a == 1:
        chrome()
    elif a == 2:
        googledrive()
    elif a == 3:
        gmail()
    elif a == 4:
        photo()
    else:
        print ("Token Value out of range, check if input '2' is correct or not")

1 Ответ

0 голосов
/ 01 сентября 2018

Прежде всего, порядок следования операторов:

if condition:
    doSomething()
elif anotherCondition:
    doSomethingDifferent()
elif anotherAnotherCondition:
    doSomethingDifferentAgain()
else:    #otherwise - if the above conditions don't satisfy(are not True)
    doThis()

Во-вторых, Цикл for имеет проблему, при которой вы передаете список a в follow_path (), а затем передаете первый второй и третий элементы списка в направлении, расположении и элементе выбора.

def follow_path(a):
    for draw in a:
        direction(a[0])
        location(a[1])
        choosetoken(a[2])

def direction(thing):
    print("direction " + str(thing))

def location(thing):
    print("location " + str(thing))

def choosetoken(thing):
    print("choosetoken " + str(thing))

a = [['Start', 'Bottom right', 1],['South', 1, 1], ['North', 3, 4], ['West', 4, 0], ['West', 2, 0], ['South', 3, 4]]
follow_path(a)

Это было задумано? или ты хотел что-то подобное;

def follow_path(a):
    for draw in a:
        direction(draw[0])
        location(draw[1])
        choosetoken(draw[2])

def direction(thing):
    print("direction " + str(thing))

def location(thing):
    print("location " + str(thing))

def choosetoken(thing):
    print("choosetoken " + str(thing))

a = [['Start', 'Bottom right', 1],['South', 1, 1], ['North', 3, 4], ['West', 4, 0], ['West', 2, 0], ['South', 3, 4]]
follow_path(a)

Что происходит, вы перебираете список a; и выбор нулевого, первого и второго элемента из каждой итерации.

Итак, первая итерация будет [«Пуск», «Справа внизу», 1], я выбираю ноль, первый и второй; «Пуск», «Внизу справа», 1 соответственно, затем переходите к следующей итерации, которая будет [«Юг», 1, 1], делайте то же самое и т. Д.

Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...