Задать вопрос
Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (1)

Лучшие ответы пользователя

Все ответы (3)
  • Работа с файлами в Python. При чтении файла вылезает ошибка. В чем причина?

    @gorodnev
    Меня несколько смущает, что Вы открываете флаг на запись 'w', а потом на нем же пытаетесь что-то прочитать. Тут выходов два - или переоткрывайте файл на чтение-запись, либо откажитесь от одной из операций.

    PS: немного подумав, мне пришла в голову идея, что Вы перепечатываете какой-то листинг. И там режим не 'tw', а 'rw' (t и r - соседние буквы в раскладке). А 'rw' - это как раз режим "чтение-запись".
    Ответ написан
    Комментировать
  • Как обратиться к функции по ключевому слову строки?

    @gorodnev
    Если я правильно понял вопрос, то Вам следует создать словарь с функциями-обработчиками, которые будут вызываться по ключевому слову. Что-то вроде такого:

    % cat ans.py
    handlers = {
      'ADD': lambda x: print('ADD with %s' % x),
      'DELETE': lambda x: print('DELETE with %s' % x),
      'INSERT': lambda x: print('INSERT with %s' % x)
      }
    for _ in range(int(input())):
      handler_name, arg = input().split()
      handler = handlers.get(
            handler_name, lambda _: print("%s wasn't found" % handler_name)
            )
      handler(arg)


    % cat input.txt 
    4
    DELETE 10
    INSERT 2
    ADD 15
    SELECT 7


    В результате запуска:

    % python3 ans.py < input.txt             
    DELETE with 10
    INSERT with 2
    ADD with 15
    SELECT wasn't found
    Ответ написан
    1 комментарий
  • IndexError: string index out of range - в чем причина?

    @gorodnev
    Мой вариант такой, в принципе вместо дека можно использовать и обычный list:

    import collections
    genome = 'aaaabbcaa'
    result = collections.deque()
    genome += '$'
    last = genome[0]
    counter = 1
    for c in genome[1:]:
      if c == last:
        counter += 1
      else:
        result.append('%s%d' % (last, counter))
        last = c
        counter = 1
    print(''.join(result))
    Ответ написан
    Комментировать