Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Подскажите по решению Python задачи

Александр Захаров Ученик (63), открыт 1 неделю назад
Выдает ошибку, помогите TypeError: add_by_note() missing 1 required positional argument: 'note'

Код
import datetime
from decimal import Decimal

items = {
'apple': [],
'lime': [],
'grape': []
}

DATE_FORMAT = '%Y-%m-%d'


def add(items, title, amount, expiration_date=None):
if title in items:
items[title].append({'amount': Decimal(amount), 'expiration_date': expiration_date})


def add_by_note(items, note):
parts = note.split()
if parts[-1].isdigit():
amount = parts[-1]
product_name = ' '.join(parts[:-1])
expiration_date = datetime.datetime.strptime(parts[-1], DATE_FORMAT).date()
add(product_name, amount, expiration_date)



def find(items, needle):
result = []
for title in items:
if query.lower() in title.lower():
result.append(title)
return result


def amount(items, needle):
found_items = find('apple')
total_amount = 0
for title in found_items:
for item in items[title]:
total_amount += item['amount']
return total_amount


def expire(items, in_advance_days=0):
today = datetime.date.today ()
expiration_date = today + datetime.timedelta(days)
for title in items:
for item in items[title]:
if item['expiration_date'] <= today or item['expiration_date'] >= expiration_date:
print(f"The item {title} has expired or will expire soon.")

add('apple', '11', datetime.date (2024, 5, 1))
add('lime', '6', datetime.date (2024, 6, 20))
add('grape', '7', datetime.date (2024, 3, 15))

add_by_note('limes 4 2024-07-10')

print(find('apple'))
print(amount())
5 ответов
Kirieshe4ka Мастер (1347) 1 неделю назад
Ответ из нейросети:

Вот несколько ошибок в вашем коде:

1. В функции `add_by_note`, в строке `add(product_name, amount, expiration_date)` не передаются аргументы `items` и `title`.
2. В функции `amount`, в строке `found_items = find('apple')`, вы вызываете функцию `find` с одним аргументом, но она ожидает два.
3. В функции `expire`, в строке `expiration_date = today + datetime.timedelta(days)`, не указано значение `days` для `timedelta`.
4. В функции `expire`, в строке `if item['expiration_date'] <= today or item['expiration_date'] >= expiration_date:`, оператор сравнения должен быть `and` вместо `or`, чтобы проверить, истек ли срок годности.
5. В функции `expire`, отсутствует отступ для блока `print(f"The item {title} has expired or will expire soon.")`.

Поправив эти ошибки, ваш код будет работать пр авильно.
Арсений Фофонов Знаток (251) 1 неделю назад
При использовании функции add_by_note() вы указали только items, но не указали note. Вы должны указать note через запятую после items.
Вы написали:
add_by_note(items)
А нужно:
add_by_note(items, note)

Если я не ошибаюсь, вам просто нужно заменить:
add_by_note('limes 4 2024-07-10')
На:
add_by_note('limes', '4 2024-07-10')

Я новичок в Python, так что не судите строго. Могу ошибаться.
ПТИЦА ГОВОРУН... Мыслитель (8858) 1 неделю назад
В питоне есть такой прикол, что библиотека может не установиться, в основном потому что для еë установки нужны ещë какие то библиотеки.
То есть одна библиотека работает за счëт другой библиотеки.
Такая длиннющая цепочка библиотек.
При установки библиотеки может вылазить ошибка установки, в которой сказано какую библиотеку сперва нужно установить, чтобы установить потом эту.
Вся ущербность питона в этом, потому что на каждую библиотеку есть права доступа, и их могут в любой момент сделать платными, или вообще всем запретить еë использование.
В итоге в цепочке библиотек отлетит огромный пласт возможностей, из за какого нибудь одного мудaка, который вдруг захотел слетать на море.
DeflineПрофи (629) 1 неделю назад
к чему это.... здесь нет таких библиотек
者道 Σnigma Гуру (3223) 1 неделю назад
Код в таком формате кидай хотя бы. Там снизу есть кнопка <>
 #include 
Print("hello world")
var x,y: integer;
DeflineПрофи (629) 1 неделю назад
это не поможет ... чел что-то непонятное хочет
Григорий-Ильич ТрошкинУченик (129) 1 неделю назад
Это даже не питон, а какой то из C языков
Денис Профи (644) 1 неделю назад
Третья снизу строка требует передачи 2х аргументов в функцию, вы передали 1.
ДенисПрофи (644) 1 неделю назад
У вас
add_by_note('limes 4 2024-07-10')

Надо так
add_by_note('limes 4', '2024-07-10')

или так
add_by_note('limes', '4 2024-07-10')
Похожие вопросы