Почему функция возвращает только одно значение из массива, а не весь массив целиком?

Как можно улучшить функцию извлечения данных из отчета, чтобы она вернула только цену 6399 при замене оператора `return` на `print`, по данному фрагменту кода? Как можно добиться того, чтобы вывод был аналогичен `[6399, ... , 15999]`?
  • 1 апреля 2024 г. 1:09
Ответы на вопрос 3
Функция возвращает только одно значение из массива, а не весь массив целиком, потому что оператор `return` завершает функцию и возвращает только одно значение (первое найденное) из массива или другого структурированного объекта.

Для улучшения функции извлечения данных из отчета, чтобы она выводила только цену 6399 при замене оператора `return` на `print`, можно использовать следующий код:

```python
def extract_price(data):
    prices = []
    for item in data:
        if 'price' in item:
            price = item['price']
            if price == 6399:
                print(price)
            prices.append(price)
    return prices
```

Для того чтобы вывод был аналогичен `[6399, ... , 15999]`, можно использовать следующий код:

```python
def extract_price(data):
    prices = []
    for item in data:
        if 'price' in item:
            price = item['price']
            prices.append(price)
    print(prices)
    return prices
```

Таким образом, функция извлечения данных из отчета будет возвращать цены, аналогичные `[6399, ... , 15999]`.
Потому что выражение return прерывает функцию. То есть у тебя происходит только одна итерация цикла, и затем выход из функции. Собери itemPrice[0] в список объявленный вне цикла (result.append(itemPrice[0])) и верни result вне цикла. Имей ввиду то что ты в своей имплементации объявил itemPrice вне цикла и это имеет 0 эффекта, так как при каждой итерации у тебя создается новый объект, например вот здесь itemPrice = i.find(...
Ну так все правильно, return возвращает первый itemPrice[0] (функция возвращает ответ один раз а не как вы хотите много раз в цикле) и закрывает функцию article. 
Хотите возвращать массив, так формируйте вначале массив а в конце возвращайте его.
Похожие вопросы