Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 14, 2015 18:41:25

Tucha
Зарегистрирован: 2015-09-12
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите придумать правильное (короткое/изящное) решения для функции.

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

Офлайн

#2 Сен. 14, 2015 19:01:13

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите придумать правильное (короткое/изящное) решения для функции.

как вы понимаете слово “идентификатор”?

Вообще, покажите пример входных данных, содержимого файла и результата.



Офлайн

#3 Сен. 14, 2015 19:27:45

Tucha
Зарегистрирован: 2015-09-12
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите придумать правильное (короткое/изящное) решения для функции.

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

Как ещё ясней объяснить, я не знаю.

Отредактировано Tucha (Сен. 14, 2015 19:28:16)

Офлайн

#4 Сен. 14, 2015 20:07:58

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Помогите придумать правильное (короткое/изящное) решения для функции.

Покажите свой вариант с перечислением в блоке функции.

Офлайн

#5 Сен. 14, 2015 20:34:07

Tucha
Зарегистрирован: 2015-09-12
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите придумать правильное (короткое/изящное) решения для функции.

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 раз, от сюда вопрос… Возможно ли найти идентификатор в списках более “коротки/правильным/изящным” путём, для последующей работы именно с тем списком который этот идентификатор содержит ?

Офлайн

#6 Сен. 14, 2015 21:44:52

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Помогите придумать правильное (короткое/изящное) решения для функции.

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
Примерно так.

Отредактировано Shaman (Сен. 14, 2015 21:45:38)

Офлайн

#7 Сен. 14, 2015 22:10:06

Tucha
Зарегистрирован: 2015-09-12
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите придумать правильное (короткое/изящное) решения для функции.

Спасибо, я примерно так и представлял.
Ещё задам тут вопрос, что бы новую тему не создавать.
Я как новичок, постоянно сталкиваюсь с проблемой такого плана, когда могу казалось бы грамотно составить, на том же псевдокоде, представление функции, но мешает слабое знание операторов, что бы перенести это в рабочий код.
Иногда я решаю это с помощью чтения документации встроенной в IDLE, иногда гуглю, иногда приходиться спрашивать на форумах и решение всегда находится, НО на это уходит куча времени.
Можете, что то посоветовать, что ускорит процесс поиска правильного оператора, функции и т.д.? Может есть какие то сводные таблицы или шпаргалки ?
Или же знание такого рода прямо пропорционально опыту ?

Офлайн

#8 Сен. 15, 2015 01:26:02

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Помогите придумать правильное (короткое/изящное) решения для функции.

Tucha
Может есть какие то сводные таблицы или шпаргалки ?
https://docs.python.org
https://docs.python.org/3/reference/index.html
https://docs.python.org/3/library/index.html



Отредактировано py.user.next (Сен. 15, 2015 01:27:03)

Офлайн

#9 Сен. 15, 2015 05:24:08

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите придумать правильное (короткое/изящное) решения для функции.

Tucha
Его как то ещё можно понимать в программировании ?
Так, как это написано второй строкой в той же статье на вики, которую вы процитировали
лексический токен, который определяет сущность. Это аналогично концепции «имя». Идентификаторы активно используются практически во всех информационных системах. Именование сущностей делает возможным ссылки на них, которые могут использоваться позже.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version