Дмитрий С.
``````
Дмитрий С.
function solution(number){ let sum = 0; for (i = 1;i<number;i++){ if (i % 3 ==0 || i % 5 ==0) { sum= sum+i;} } return sum; } solution(10);
Дмитрий С.
You have passed all of the tests! :) 😭😂
Andrii
Тогда почему он в sum пишет нормальный ответ, а не underfined?
Ты же сказала ему вывести sum, он честно вывел. Но вернул undefined, который больше нигде не использовался
Ol
Ты же сказала ему вывести sum, он честно вывел. Но вернул undefined, который больше нигде не использовался
Значит, я не понимаю смысла return и смысл возврата, кому и куда он это возвращает
Евгений
Тогда почему он в sum пишет нормальный ответ, а не underfined?
Вернуть результат из функции необходимо, чтобы использовать его в дальнейшем. Например, положить в переменную или передать в качестве аргумента другой функции.
Ol
Да блин. Он уже посчитал все. У него уже в переменной sum записан корректный результат. Это значит, он уже в переменную записал
Leonid
Ну смотри. Есть функция function sum(a, b) { return a + b; } Когда ты её используешь, она возвращает результат: sum(5, 10) вернёт тебе 15. Вывести можно так console.log(sum(5, 10));
Евгений
Да блин. Он уже посчитал все. У него уже в переменной sum записан корректный результат. Это значит, он уже в переменную записал
Потому что ты конкретно используешь обращение к глобальной переменной в функции. Получается твоя функция может быть использована только с этой переменной и теряет свой смысл. Тебе нужно присваивать в первую результат, который возврпщает функция после своего выполнения, а не перезаписывать его внутри
Andrii
Значит, я не понимаю смысла return и смысл возврата, кому и куда он это возвращает
Представь, что ты функция, вычисляющая факториал. Я говорю тебе 3, а ты говоришь мне 6. Ты вернула мне значение 6. А теперь я спросил другую функцию. Они ничего не ответила, но написала на бумажке 6. Это другая функция, которая вернула undefined и вывела что-то в лог
Дмитрий С.
Просто допиши return sum )))))))))
Maksim Pozharskiy
Просто допиши return sum )))))))))
Не, наоборот то что вот так спрашивает и пытается понять нахрена вообще return нужен - это правильней чем просто принять что вот он нужен потому что сказали все так
Andrii
Если я проверяльщик теста, я не вижу листочка. Мне надо услышать цифру. И с моей точки зрения функция услышала меня и молчит как рыба об лёд.
Maksim Pozharskiy
Как ты 2 реакции, поставил, читер?
Это на мидле открывается
Leonid
Это на мидле открывается
А, ну значит через постель, я пока не готов.
Ммммммм
Всем привет!!! В нашу команду разработчиков ищем двоих Python developer •опыт работы от 5 месяцев •знание Python •знание Selenium •опыт в написании Ботов для ТГ Nice to have: •Django •js+html+css Что наша команда может предложить: •Куча интересных проектов •Хорошая ЗП •Боевой опыт,что так сильно требуют все IT компании Большенство задач по web scraping и написанию ботов для тг,так что ждём людей с опытом в этой области!!! Всем хорошего дня!!!
Ol
Если я проверяльщик теста, я не вижу листочка. Мне надо услышать цифру. И с моей точки зрения функция услышала меня и молчит как рыба об лёд.
приведи, пожалуйста, пример, где и как всплывает этот underfind. потому что я продолжаю расчеты дальше и у меня ничего не ломается. вывел 38 в моем понимании, раз продолжает расчеты с переменной, то функция уже запомнила переменную правильно после выполнения функции
Leonid
You have passed all of the tests! :) 😭😂
Порешай чутка 8 кю задачки, потом 7 кю. Посмотри решения других. Там как раз на базовый синтаксис и логику.
Meguru be horny
Ребят, создал два контейнера в докере, один апи, другой тг бот, в тг боте пытаюсь кинуть запрос на апи, но запрос даже не проходит. Оба в одной сети,драйвер bridge
Ol
var x = solution (10); console.log(x);
Вижу. То есть ретерн - это выражение, которое мы может записать в переменную, которой присваивается функция?
Дмитрий С.
А почему в этой задаче переменную нужно в функции объявлять?
Meguru be horny
Ребят, создал два контейнера в докере, один апи, другой тг бот, в тг боте пытаюсь кинуть запрос на апи, но запрос даже не проходит. Оба в одной сети,драйвер bridge
app: container_name: "app" image: app env_file: - .env build: context: . dockerfile: DOCKERFILE depends_on: - api command: python telegram/telegram_test.py networks: - net api: container_name: "api" image: api env_file: - .env build: context: . dockerfile: DOCKERFILE command: python main.py networks: - net
Meguru be horny
Как пытаешься обратиться к серверу? В плане по какому пути
пытался по 0.0.0.0, 127.0.0.1, просто подставлял api
Leonid
А почему в этой задаче переменную нужно в функции объявлять?
Чтобы не выходила за рамки функции 🤷‍♂️ Чтобы при повторном использовании этой функции, переменная приравнивалась к нулю. let res = 0; function solution(number) { res += number; return res; } solution(5); // result: 5; solution(10); // result: 15; solution(15); // result: 30; Или function solution(number) { let res = 0; res += number; return res; } solution(5); // result: 5; solution(10); // result: 10; solution(15); // result: 15;
Andrii
Вижу. То есть ретерн - это выражение, которое мы может записать в переменную, которой присваивается функция?
Не функция присваивается, а выражение y = f(x) вызывает функцию f с параметром x и записывает возвращаемое значение в переменную y.
Azamat
пытался по 0.0.0.0, 127.0.0.1, просто подставлял api
Надо бы порты указать у контейнеров ports: - "host:hostport:containerport" Я обычно через links делаю, а не depends_on. Получается так: app: some_config... links: - api api: some_config... ports: - "127.0.0.1:8080:8080" И далее можно обращаться из app к api по api:8080
Ol
Не функция присваивается, а выражение y = f(x) вызывает функцию f с параметром x и записывает возвращаемое значение в переменную y.
А это единственно возможный вариант использования возвращаемого значения функции - запись в переменную?
Maksim Pozharskiy
Можно без записи переменной использовать в вызове другой функции
Maksim Pozharskiy
func1(func2(аргумент))
Maksim Pozharskiy
Тут возвращаемое значение из func2 будет аргументов в func1
Maksim Pozharskiy
собственно когда мы в консоль лог выводим вызов функции, мы это и делаем console.log(func(argument)) потому что log это тоже функция
Роман
Я правильно понимаю, что в Питоне нет конструкции типа break 2 (т.е. для выхода из более чем одного цикла)?
Azamat
Azamat
тогда поменяй порты так: ports: - "127.0.0.1:8000:8000" и делай коннект из app в api по пути http://db:8000/
Andrii
А это единственно возможный вариант использования возвращаемого значения функции - запись в переменную?
Ну... Можно в другую функцию передать, написали уже. Вместо var b = f(a); var c = g(b); Можно записать var c = g(f(a))
Azamat
насчет коннекта не понял
Ты указываешь два порта "хостпорт:контейнерпорт" Если ты захочешь обратится из другого контейнера нужно добавить links: - api и след путь: http://api:контейнерпорт/ Если ты захочешь обратится не из контейнера, а например с компа, где ты их запустил, то используй путь: http://127.0.0.1:хостпорт/
Azamat
https://docs.docker.com/compose/networking/ вот пример с документации
Azamat
в линки добавил
Порты у api указал? Выше ссылка, там понятнее объясняется что к чему
Azamat
Вроде все. Попробуй запустить.
Meguru be horny
Вроде все. Попробуй запустить.
requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8000): Max retries exceeded with url: /task
Meguru be horny
Вроде все. Попробуй запустить.
могу гит скинуть, там весь код,поможет?
Azamat
Вот тут используй host="api"
Meguru be horny
ахаххахаха, теперь к базе не конектится:D
Meguru be horny
Вот тут используй host="api"
По идее в дб такое добавить надо?
Leonid
УРААААА
ну теперь я тоже хочу :D
Meguru be horny
api: container_name: "api" image: api env_file: - .env build: context: . dockerfile: DOCKERFILE links: - db command: python main.py ports: - "127.0.0.1:8000:8000" networks: - net db: container_name: "db" image: postgres:14.1-alpine restart: always environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_DB=postgres ports: - "5432:5432" networks: - net networks: net: driver: bridge
Meguru be horny
где тут поворот не туда
Leonid
А зачем ты это делаешь?
Meguru be horny
Azamat
По идее в дб такое добавить надо?
+. И коннектиться к базе данных по db:5432
Leonid
В докер пихаю?
Вообще какая цель это всё делать? Задача по работе стоит?
Meguru be horny
+. И коннектиться к базе данных по db:5432
ну я уже и в алембике и сессишнс пихнул, не сработало
Leonid
пет проект, пытаюсь в новое
Классно, меня как-то не хватает на пэт-проекты. Может ещё не пришел к этому. Но хочется. А докер сейчас повсюду встречаю, хороший выбор, имхо.
Meguru be horny
а, я понял почему не коннектится, я же базу снес, там миграций нет:D
Meguru be horny
db_migration: image: app restart: "on-failure" links: - db depends_on: - db command: sh -c "python -m alembic upgrade head" сильно хитрый способ накатить миграции?
Azamat
db:5432?
Meguru be horny
по какому пути? Скинь конфиг
все заработало, миграций не было только
Meguru be horny
теперь осталось понять как миграции накатывать и на сервак:D
Azamat