• Как исправить ошибку в программе на python?

    trapwalker
    @trapwalker Куратор тега Python
    Алан Гибизов,
    методом тыка устранить дым из выхлопной трубы машины

    В данном случае автор видел у машин дым и теперь пытается накурившись привязать свой дым скотчем к выхлопной трубе, чтобы машина поехала.
  • Как исправить ошибку в программе на python?

    trapwalker
    @trapwalker Куратор тега Python
    laspo,
    Когда я учил функции я знал эту ошибку она означала что нужно передать аргументы в параметры

    Вы плохо "учили функции". Вы не понимаете для чего они нужны. Вернитесь и повторите материал по учебнику.
  • Как исправить ошибку в программе на python?

    trapwalker
    @trapwalker Куратор тега Python
    laspo, там одна сплошная банальная ошибка.
    # 1. Зачем нужен этот класс? Чтобы было? Это ошибка. Тут не нужен класс.
    class ProgrammForTest():
        # 2. Зачем вы передаете параметры в конструктор и сохраняете в объекте, 
        # если потом все равно запрашиваете их у пользоваетля? Никакого смысла!
        def __init__(self,a, b, c, ball):
            self.a = a
            self.b = b
            self.c = c
            self.ball = ball
        def enter(self):
            # 3. Что это за метод? Зачем он нужен? Куда вы входите тут? 
            # Прочитайте про чистые функции.
            self.a = int(input("Введи количество вопросов\n>"))
            self.b = int(input("Введи количество правильных ответов\n>"))
            self.ball = int(input("Какая у вас система оценивания вводите цифрой(5, 12)\n>"))
            c = int(((self.b/self.a)*100))  
            # 4. нельзя так делать. При приведении к целому дробная часть просто отбрасывается
            # тогда, к примеру int(83.999) = 83, а на самом деле оно ближе к 84. Нужно округлять. 
            # А тут даже это не нужно 
            if self.ball == 12: #Если система двенадцатибальная обрабатывается данный кусок кода
                if 100 >= c >= 92: #Если процент равен диапазону от 100 до 92, то выводится оценка которая была рассчитана на калькуляторе 
                    print("Ваша оценка: 12") #Следующие условия делают тоже самое: Диапазон, оценка
                # 5. Зачем здесь и ниже проверять каждый раз ОБЕ границы слева и справа? 
                # Вы же одну границу уже проверили выше!
                elif 92 >= c >= 84:
                    # 6. Такие вещи как пересчет в баллы, нужно делать отдельной функцией и возвращать в виде 
                    # числа. А вы печатаете. А что если надо будет еще одно число в баллы преобразовать?
                    print("Ваша оценка: 11")
                elif 84 >= c >= 79:
                    # 7. Вам нужно освоить такое понятие, как пропорция, тогда все эти строки сравнений можно было бы 
                    # записать одной единственной формулой. И даже если нет, то можно задать таблицу списком и 
                    # искать в нём ближайшее значение.
                    print("Ваша оценка: 10")
                elif 79 >= c >= 67:
                    print("Ваша оценка: 9")
                elif 67 >= c >= 62:
                    print("Ваша оценка: 8")
                elif 62 >= c >= 58:
                    print("Ваша оценка: 7")
                elif 58 >= c >= 46:
                    print("Ваша оценка: 6")
                elif 46 >= c >= 41:
                    print("Ваша оценка: 5")
                elif 41 >= c >= 33:
                    print("Ваша оценка: 4")
                elif 33 >= c >= 25:
                    print("Ваша оценка: 3")
                elif 25 >= c >= 16:
                    print("Ваша оценка: 2")
                elif c < 16:
                    print("Ваша оценка: 1")
    
            elif self.ball == 5: #Если пятибальная система, то производится всё тоже самое: Диапазон, оценка
                if 100 >= c >= 84:
                    print("Ваша оценка: 5")
                elif 84 >= c >= 67:
                    print("Ваша оценка: 4")
                elif 67 >= c >= 50:
                    print("Ваша оценка: 3")
                elif 50 >= c >= 0:
                    print("Ваша оценка: 2")
    
    # 8. Вы создали класс с кучей аргументов в конструкторе, а ничего не передаёте ему при инстанцировании.
    a = ProgrammForTest()
    # 9. Зачем тут класс и метод? Ради того чтобы было? В программе ничего лишнего быть не должно.
    # Весь ненужный код - это просто лишний мусор для восприятия человеком и лишнее место для ошибок.
    a.enter()
    # 10. Зачем сохранять в переменную значение, которое не нужно?
    dont_exit = input("Press 'Enter' to exit")
  • Проблемы с подключением двух разных ПК. Как сделать правильно?

    trapwalker
    @trapwalker Куратор тега Python
    Elacov_top, поясню. Вы в своей квартире построили из кубиков лего два домика. напсиали письмо, но указали в нем свой реальный адрес квартиры, но бросили письмо в игрушечный почтовый ящик из лего. Маленькие лего-человечки-почтальоны с ног сбились в поисках такго адреса, но за пределы вашего игрушечого лего-мира они выбежать не могут.
    Если вы укажете игрушечный адрес игрушечного лего-домика, то маленькие почтальоны принесут письмо по адресу без проблем.

    Вы, конечно, можете написать письмо по-настоящему, бросить его где-то в почтовом отделении в городе, и оно придёт вам в почтовый ящик вашей квартиры, но тогда нужно объяснить родителям (настроить проброс порта). что письма надо перекладывать в ваш игрушечный почтовый ящик. А если у вас NAT, то его вообщ епридётся "пробивать", ведь родитеям не до вас и они не хотят играть в ваши игры

    Простите, за такую аналогию. Но теперь должно быть понятно даже без гугления.
  • Проблемы с подключением двух разных ПК. Как сделать правильно?

    trapwalker
    @trapwalker Куратор тега Python
    Elacov_top, вот исользуйте вот этот "192.168.0.7" адрес и все у вас будет работать.
  • Проблемы с подключением двух разных ПК. Как сделать правильно?

    trapwalker
    @trapwalker Куратор тега Python
    GNUBack, по умолчанию он довольно большой. Я вот тоже не дождался. Автор просто не понял, что блокирующий вызов коннекта продолжал висеть.
    Если ему нужно детектировать такую проблему быстрее, то стоит поставить небольшой таймаут, но корень проблемы в попытке подключиться локально по внешнему IP от провайдера.
  • Проблемы с подключением двух разных ПК. Как сделать правильно?

    trapwalker
    @trapwalker Куратор тега Python
    GNUBack, автор не установил сокету таймаута. Сокет висит пытаясь подключиться и никакой ошибки не падает. Если поставить settimeout или глобально setdefaulttimeout, то вальнётся с соттветствующей ошибкой спустя указанное время.
    IP-адрес валидный, он даже пингуется, но на этом адресе нкто не отвечает на подключение, но и не режектит его.
    Вот telnet тоже висит до истечения таймаута:
    $ telnet 5.165.233.230 8080
    Trying 5.165.233.230...
    telnet: Unable to connect to remote host: Connection timed out


    Автору предложили попробовать телнетом проверить подключение, но он решил проигнорить то, что не понимает.
  • Как ускорить метод users.get?

    trapwalker
    @trapwalker Куратор тега Python
    soremix, да разве ж тут кто читает доки? Можно ж приёти и спросить.
    С ужасом представляю себе сколько таких погромистов появится когда они догадаются, что быстрее и эффективнее задавать такие вопросы ChatGPT, чем немного токсичному сообществу экспертов на таком ресурсе как наш. Чатжпт не пошлёт гуглить, читать мануалы, и не откажется решать за двоечника его тестовые учебные задания.
    В интересное время живём. Интересно. кто-то уже пробовал натравить нейросеть на вопросы с этого ресурса?=) Надо как-то продумать составить префикс промта, чтобы нейронка уяснила специфику ресурса.
  • Как ускорить метод users.get?

    trapwalker
    @trapwalker Куратор тега Python
    drrsanPy, если нет в АПИ готового метода, то никак. Можно построить логику проекта так, чтобы быстрого результата не требовалось, но и приложение не висело, а параллельно тянуло инфу, возможно с избыточность, иногда с запасом, кешировало всё что можно.
    Можно поменять местами какие-то этапы работы приложения, заранее загружать друзей-друзей, даже если еще не известно, что они понадобятся.
    Вам бы про кэширование и асинхронность поизучать.
  • Подсчет hash суммы .iso образа?

    trapwalker
    @trapwalker
    Не факт. Вместе с файлами запекаются и даты доступа. Даже если файлы имеют идентичное содержание и одинаковую хеш-сумму, в рамках ISO-образа они сохраняются вместе с метадаными файла, которые могут отличаться после доступа к файлу на запись. Даже если дозаписано туда ноль байт.
  • Что мне нужно знать для создания программы на Python?

    trapwalker
    @trapwalker
    Очень странную задачу вы себе ставите. Тем более в качестве первого проекта на новом языке. которого совершенно не знаете.
    Странна эта задача тем, что помимо знания языка вам в рамках её решения понадобится куча специфических знаний, которые к изучению конкретно этого языка относятся довольно косвенно и, скорее, отвлекут, расфокусируют вас, нежели предоставят хорошую задачу для практического освоения навыков кодирования на этом языке.

    Я бы посоветовал начать с более простых и узких задач. Кто-то метко предложил начать с калькулятора, и это довольно разумное решение, поскольку такая задача больше подходит в качесте учебной.

    Если вы, всё же, хотите непременно плеер, то есть более релевантная для ваших навыков задача на эту тему.

    Представьте, что нужно вам для небольшого офиса или кафе нужно сделать звуковое оформление с управлением через веб-интерфейс со смартфона или компьютера любого из сотрудников.
    Для этого нужен бэкенд плеера с плейлистами, грамотным шафлом, системой рейтинга треков, чтобы управлять потоками воспроизведения в одном или нескольких сегментов офиса. Фактически можно взять готовый бэкенд интернет-радио и прикрутить к нему АПИ для управления очередью воспроизведения и плейлистами. Подключить к такому локальному интернет-радио можно любые устройства, которые могут воспроизводить на колонки звуковой поток.

    - Суть проекта будет попроще - управление потоком воспрозведения через веб-интерфейс.
    - Проект получится более лаконичным и полезным
    - Набор решаемых задач позволит сфокусироваться на более типовых вещах для языка.
  • Как захостить flask со своего сервера?

    trapwalker
    @trapwalker
    Ася, Что именно не вышло? Вы же можете разбить проблему на составные части и решать их поотдельности.
    Вот вы подняли nginx. Удалось статику через него увидеть? Если нет. то проблема вовсе не в flask, о нем и говорить не нужно, а нужно разбираться с файрволом, портами и прочим.
    А то как в том анекдоте, когда "куда ни ткну, везде больно", а болел, оказывается, палец.
  • Как захостить flask со своего сервера?

    trapwalker
    @trapwalker
    Ася, я бы поднял nginx и его уже выставлял наружу, а как настроить upstream
    flask с nginx - таких инстркций навалом в сети.
  • Как захостить flask со своего сервера?

    trapwalker
    @trapwalker
    Ася, вы явно не в том теге вопрос задаёте. Вам надо про сети или амазон спрашивать. Какая разница чем порт слушать?
  • Как захостить flask со своего сервера?

    trapwalker
    @trapwalker
    так проблема не во фласке, а в конфигурации вашей машины на EC2
  • Как захостить flask со своего сервера?

    trapwalker
    @trapwalker
    Проверить открыт ли конкретный порт можно с помощью
    telnet ip_addr 5111
    Если не доступен при запущеном flask, то разбирайтесь с конфигурацией
  • Хочу понимать биты/байты и их друзей. Литература?

    trapwalker
    @trapwalker
    res2001, да чем же 16-ричная сложнее? То же самое, только цифр больше.
    Хотя соглашусь, вот на прошлой неделе попробовал объяснить жене суть систем счисления. Потребовалось минут сорок, чтобы научить считать в произвольной системе счисления и переводить туда и обратно, но всё равно путалась постоянно от невнимательности.
    Главное - втолковать, что означают разряды числа. В десятичной это единицы, десятки, сотни... В двоичной это будут единицы, двойки, четверки. Но по факту оказалось удобнее и проще начинать объяснение с восьмиричной системы. Она ближе оказалось для понимания к десятичной. Стоило перешагнуть понимание, что в восьмиричной 10 - это 8, и сразу пошло проще.
    Нахера я это всё почти час объянял жене я так и не понял.
  • Как узнать есть ли GPS датчик в ноутбуке?

    trapwalker
    @trapwalker
    habr389, определение местоположения может происходить не только по GPS, но и по WiFi, IP и роутингу через сеть провайдера
  • Как правильно реализовать схему работы с получением моделей в Django?

    trapwalker
    @trapwalker
    Василий Васильков, Это потому. что вы пытаеетесь вывести не ascii символы в стрим, у которого не указана кодировка по умолчанию.
    Конвертируйте вручную в utf-8 и все будет работать
  • Что особенного в IP адресе 8.8.8.8?

    trapwalker
    @trapwalker
    Добавлю, что у гугла есть два таких известных IP-адреса DNS. Второй - 8.8.4.4
    А ещё есть cloudflare, который предоставляет DNS на адресах 1.1.1.1 и 1.0.0.1
    Некоторые провайдеры могут прописывать именно эти адреса, вместо гугловых, но, как было замечено выше, чаще всего провайдер держит свои DNS.

    Кстати, один из DNS клоудфлера можно использовать вот так вот коротко:
    ping 1.1
    Очень удобно и быстро набирать.