Найти - Пользователи
Полная версия: Помогите придумать правильное (короткое/изящное) решения для функции.
Начало » Python для новичков » Помогите придумать правильное (короткое/изящное) решения для функции.
1
Tucha
Функция принимает два параметра - название .dat файла и некое значение которое потом используется как идентификатор.
Из .dat файла подтягиваются пять списков. В каждом списке, одна из последовательностей - значение (допустим 1, 2, 3, 4, 5) которое должно сравниваться с параметром который приняла функция.
Вопрос, можно ли сделать так, что бы функция, “прочитав” все списки и увидев нужный идентификатор только в одном, начала работать именно с этим списком ?
Естественно вариант с перечислением внутри функции какой идентификатор к какой строке принадлежит не подходит, он конечно рабочий, но хотелось бы узнать, есть ли ещё способы.
FishHook
как вы понимаете слово “идентификатор”?

Вообще, покажите пример входных данных, содержимого файла и результата.
Tucha
FishHook
как вы понимаете слово “идентификатор”?
Идентифика́тор — уникальный признак объекта, позволяющий отличать его от других объектов (wiki)
Его как то ещё можно понимать в программировании ? Просьба объяснить, что бы в дальнейшем я никого не путал.
FishHook
Вообще, покажите пример входных данных, содержимого файла и результата.
Пример входных данных - (“file.dat”, “1”)
Содержимое файла - это списки, не важно какие и сколько, важно что в каждом списке есть значение (одна из последовательностей), которое можно использовать как идентификатор самому списку (например в первом списке файла, есть значение “1”, больше такого значения нет ни в каком другом списке в этом файле).
Результат - если функция принимает (“file.dat”, “1”), то начинает работать с неким файлом file.dat и ПЕРВОЙ строкой в этом файле.
Интересуют варианты реализации. Вариант с перечислением идентификаторов в блоке функции не подходит.

Как ещё ясней объяснить, я не знаю.
Shaman
Покажите свой вариант с перечислением в блоке функции.
Tucha
def game(category, cost):
    """Выбирает и задаёт вопрос исходя из принятого файла и стоимости. Возвращает кол-во выигранных баллов"""
    questions = open(category, "rb")
    ten = pickle.load(questions)
    twenty = pickle.load(questions)  
    if str(cost) in ten:
        print("1")
    elif str(cost) in twenty:
        print("2")

(я минимизировал код, что бы сфокусироваться именно на том что я хочу выяснить)
Вот тут два списка которые я проверяю на наличие идентификатора, если списков будет 50, мне надо будет воспользоваться оператором elif 50 раз, от сюда вопрос… Возможно ли найти идентификатор в списках более “коротки/правильным/изящным” путём, для последующей работы именно с тем списком который этот идентификатор содержит ?
Shaman
def game(category, cost):
    """Выбирает и задаёт вопрос исходя из принятого файла и стоимости. Возвращает кол-во выигранных баллов"""
    with open(category, "rb") as questions:
        all_lists = [pickle.load(questions), pickle.load(questions)]
    for i, v in enumerate(all_lists, 1):
        if str(cost) in v:
            print(i)
            break
Примерно так.
Tucha
Спасибо, я примерно так и представлял.
Ещё задам тут вопрос, что бы новую тему не создавать.
Я как новичок, постоянно сталкиваюсь с проблемой такого плана, когда могу казалось бы грамотно составить, на том же псевдокоде, представление функции, но мешает слабое знание операторов, что бы перенести это в рабочий код.
Иногда я решаю это с помощью чтения документации встроенной в IDLE, иногда гуглю, иногда приходиться спрашивать на форумах и решение всегда находится, НО на это уходит куча времени.
Можете, что то посоветовать, что ускорит процесс поиска правильного оператора, функции и т.д.? Может есть какие то сводные таблицы или шпаргалки ?
Или же знание такого рода прямо пропорционально опыту ?
py.user.next
Tucha
Может есть какие то сводные таблицы или шпаргалки ?
https://docs.python.org
https://docs.python.org/3/reference/index.html
https://docs.python.org/3/library/index.html
FishHook
Tucha
Его как то ещё можно понимать в программировании ?
Так, как это написано второй строкой в той же статье на вики, которую вы процитировали
лексический токен, который определяет сущность. Это аналогично концепции «имя». Идентификаторы активно используются практически во всех информационных системах. Именование сущностей делает возможным ссылки на них, которые могут использоваться позже.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB