Беда со списками и функциями в python - PullRequest
0 голосов
/ 17 апреля 2020

Я студент, и одна из моих задач заключается в рисовании с черепахой на основе случайно сгенерированного числа. Следующий код аналогичен задаче.

def aaa():
numbers = []
for number_list in range(2):
    bbb = randint(1, 6)
    numbers.append(bbb)

Я предполагал создать цепочку if/elif, чтобы определить, какое действие необходимо предпринять для каждого сгенерированного числа, как показано ниже. Однако у меня возникли проблемы, поскольку функция aaa не является list.

if aaa == 1:
print('a')

if aaa == 2:
print('b')

if aaa == 3:
print('c')

if aaa == 4:
print('d')

if aaa == 5:
print('e')

if aaa == 6:
print('f')

Ответы [ 3 ]

1 голос
/ 17 апреля 2020

Вы должны вернуть значение из функции. после этого вы должны пройти через список oop.

import random

def aaa_func():
    numbers = []
    for number_list in range(2):
        bbb = random.randint(1, 6)
        numbers.append(bbb)
    return numbers

aaa_list = aaa_func()

for aaa in aaa_list:

    if aaa == 1:
        print('a')

    if aaa == 2:
        print('b')

    if aaa == 3:
        print('c')

    if aaa == 4:
        print('d')

    if aaa == 5:
        print('e')

    if aaa == 6:
        print('f')
0 голосов
/ 17 апреля 2020
  1. Ваша функция нуждается в отступе, чтобы интерпретатор знал, какие строки принадлежат функции.

  2. Вы хотите получить список с номерами из функции, поэтому верните список numbers из функции.

  3. При вызове функции вам необходимо добавить скобки (в противном случае вы просто получите объект функции).

  4. Вместо использования нескольких if рекомендуется использовать elif для всех if следующих

  5. Вам нужно для перебора всех элементов списка, которые вы получаете как возвращаемое значение из вашей функции aaa().

Ваш общий код должен выглядеть примерно так:

def aaa():
    numbers = []
    for number_list in range(2):
        bbb = randint(1, 6)
        numbers.append(bbb)

    return numbers


for number in aaa():
    elif number == 1:
    print('a')

    elif number == 2:
    print('b')

    elif number == 3:
    print('c')

    elif number == 4:
    print('d')

    elif number == 5:
    print('e')

    elif number == 6:
    print('f')
0 голосов
/ 17 апреля 2020

ааа это функция, а не список. Вам нужно вызвать aaa, заставить его вернуть список и затем выполнить итерацию по списку.

def aaa():
    numbers = []
    for number_list in range(2):
        bbb = randint(1, 6)
        numbers.append(bbb)
    return numbers

numbers = aaa()

for number in numbers:
    if aaa == 1:
        print('a')

    elif aaa == 2:
        print('b')

    elif aaa == 3:
        print('c')

    elif aaa == 4:
        print('d')

    elif aaa == 5:
        print('e')

    elif aaa == 6:
        print('f')
...