Задать вопрос
  • Поможете создать текстовый квест на python?

    Vindicar
    @Vindicar
    RTFM!
    Так.
    Но когда дело дошло до переделывания структуры программы - > начались проблемы с не знанием символов, операторов, логических уровней python

    Во-первых, нужно освоить азы языка. Порешайте простые упражения, освойте ветвления, циклы, функции, азы классов. Этого хватит.
    текстовый квест

    Во-вторых, стоит освоить идею конечного автомата (state machine). Это реально очень просто.
    Как освоишь, поймешь, что твой квест - это кучка параллельно работающих конечных автоматов. Один описывает локации мира, другие - состояния отдельных квестов (не начат, находится на том или ином этапе, готов к сдаче, сдан, провален).
    Важный вывод: тебе потребуется как-то хранить эти автоматы так, чтобы к любому из них можно было удобно обратиться из любого места!
    В третьих, осваиваешь State Pattern. Он может пригодиться для реализации мира. По сути, у тебя разные локации будут разными состояниями, и каждая из них может быть представлена как отдельный объект, реагирующий на действия пользователя. Реакция заключается в дергании других автоматов (например, не пускать, пока не пройден квест, или инициировать квест по входу в локацию) и в выводе текста.
    Ты можешь описывать разные локации как разные классы или как разные объекты одного класса.
    Первый подход проще с точки зрения кода, но гораздо более громоздкий, так как на каждую локацию придётся отдельный класс.
    Второй подход сложнее с точки зрения кода, но классов будет меньше, а локации будут представлены данными.
    Я бы начал с первого подхода, чтобы освоиться.
    В-четвёртых, тебе потребуется хранить состояние игрока (и возможно других мобов). Это простые классы, или даже просто словари (dict). Я бы всё же сделал классы.

    Тогда у тебя в программе будет три основных блока.
    1. Интерфейс - кусок кода, который показывает пользователю текующее состояние игры и принимает его ввод, а потом отдаёт этот ввод текущему состоянию игры.
    2. Хранилище автоматов. В первую очередь это автомат навигации по миру, но также и автоматы квестов. Можешь сделать его просто словарём с ключами-строками - так бдует проще.
    3. Данные игрока. Лучше хранить в отдельном классе, но автоматы должны иметь к нему доступ, так или иначе.
    Ответ написан
    2 комментария
  • Как реализовать потоки выполнения сопрограм бота?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Во-первых, в принципе не стоит смешивать асинхронность с многопоточностью. Во-вторых, вам этого и не нужно, aiogram для того асинхронным и разработан, чтобы его могли использовать несколько юзеров одновременно. Для этого достаточно код правильно написать.
    Ответ написан
    Комментировать
  • Как отсортировать dict по размерам list в их значениях?

    @twistfire92
    Python backend developer
    Для вывода можно сделать так:

    dct = {1: [1, 2, 3, 4, 5], 2:[1, 2, 3], 3:[1, 2, 3, 4, 5, 6, 7, 8, 9], 4:[1, 2, 3, 4, 5, 6, 7, 8], 5:[1, 2, 3, 4, 5, 6, 7, 8, 9]}
    
    list_dct = list(dct.items())
    list_dct.sort(key=lambda i: len(i[1]))
    for i in list_dct:
        print(i[0], ':', i[1])
    
    # Вывод:
    # 2 : [1, 2, 3]
    # 1 : [1, 2, 3, 4, 5]
    # 4 : [1, 2, 3, 4, 5, 6, 7, 8]
    # 3 : [1, 2, 3, 4, 5, 6, 7, 8, 9]
    # 5 : [1, 2, 3, 4, 5, 6, 7, 8, 9]
    Ответ написан
    Комментировать
  • Как отсортировать dict по размерам list в их значениях?

    Wispik
    @Wispik
    res = dict(sorted(dct.items(), key=lambda item: len(item[1])))
    Ответ написан
    Комментировать
  • Как удалить строку из list при упоминании из списка слов?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    a = [x for x in a if '?from' not in x['url']]
    Ответ написан
    1 комментарий
  • Как можно записать текст(который содержится в текстовом файле) в NoSql (По порядку)?

    @maybebaby
    Предположим, что данные у вас находятся в файле file.txt, а MongoDB работает на этой же машине (локально), скрипт предельно простой:

    import pymongo
    
    # Создаем клиент MongoDB
    client = pymongo.MongoClient()
    # Название БД
    db = client['univercity']
    # Название коллекции
    collection = db['courseworks']
    
    # Открываем файл
    with open('file.txt') as file:
        # Читаем строки из файла в переменную
        lines = [line.strip() for line in file.readlines()]
    
    # Проходим по каждой строке
    for line in lines:
        # Делим строку на слова
        words = line.split()
        # Извлекаем столбцы
        a, b, c, d, e  = words[0], ' '.join(words[1:-3]), words[-3], words[-2], words[-1]
        # Вставляем документ в базу Монго
        collection.insert_one({
            "type":    a,
            "text":    b,
            "lang":    c,
            "version": d,
            "value":   e
            })

    В оболочке mongo можно проверить записанные данные:
    > use univercity
    switched to db univercity
    > db.courseworks.find()
    { "_id" : ObjectId("60b77e2c9fa82c54395b405e"), "type" : "КП", "text" : "Провайдер", "lang" : "Delphi", "version" : "7.0", "value" : "900+" }
    { "_id" : ObjectId("60b77e2c9fa82c54395b405f"), "type" : "Программа", "text" : "Программа для тестирования (версия 1)", "lang" : "Delphi", "version" : "7.0", "value" : "1000" }
    { "_id" : ObjectId("60b77e2c9fa82c54395b4060"), "type" : "Программа", "text" : "Программа для тестирования (версия 2)", "lang" : "Delphi", "version" : "7.0", "value" : "1400" }
    Ответ написан
    Комментировать
  • Где начать зарабатывать типикал веб-макаке?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Написание курсачей для нерадивых студентов и сайтов для родни и их знакомых.
    Ответ написан
    Комментировать
  • Не зазорно ли просить понижения на работе, если чувствуешь что не тянешь на должность?

    Zoominger
    @Zoominger
    System Integrator
    Было такое.
    Поговорил с руководителем и меня разгрузили.
    Дерзайте!
    Ответ написан
    Комментировать
  • Как из exe перевести в py наоборот?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    никак

    ну можешь переименовать (с)
    Ответ написан
    Комментировать