Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> тест по Python - ошибка в коде 
V
    Опции темы
ll75
Дата 6.2.2018, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ok, let' go
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 4.10.2006
Где: musiq

Репутация: нет
Всего: 1



Вопрос из теста по Python:
Which of the following code samples will flatten the "irregular" list below: (choose all that apply)
Код

L = [[1, 2, 3], [4, 5], 6] to [1, 2, 3, 4, 5, 6]

Note: There may be more than one right answer.

Какой из следующих примеров кода будет сглаживать «нерегулярный» список ниже: 
Код

L = [[1, 2, 3], [4, 5], 6] в [1, 2, 3, 4, 5, 6]


Примечание: может быть более 1 правильного ответа

Пробовал и для python2 и для python3 - все 4 варианта с ошибками, наверное где-то в коде ошибся, когда набивал в редакторе. Варианты ответа:
1.
Код

g = str(L).replace('[', '').replace(']', ''
flattenedList = [int(x) for x in g.split(',') if x.strip()]

2.
Код

def flatten(L):
  for el in L:
      if isinstance(el, collections.Iterable) and not isinstance(el, basestring):
          for sub in flatten(el):
      else:
          yield el    


3.
Код

def flatten_gen(L, ltypes=collections.Sequence):
  ltype = type(L)
  l = list(L)
  i = 0
  while i < len(l):
    while isinstance(l[i], ltypes):
        if not l[i]:
            l.pop(i)
            i -= 1
            break
        else:
            l[i:i + 1] = l[i]
    else:
        yield l[i]
    i += 1

4.
Код

import re 
def Flatten(L):
    a = str(L)
    b,crap = re.subn(r'[\[,\]]', '', a)
    c = b.split() 
    d = [int(x) for x in c]

    return d


Плз хелп ми! А то устал бороться...
PM MAIL   Вверх
ll75
Дата 6.2.2018, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ok, let' go
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 4.10.2006
Где: musiq

Репутация: нет
Всего: 1



Когда запускал 1 вариант:
Код

  File "./tezt.py", line 10
    else:
    ^
IndentationError: expected an indented block


2 вариант:
Код

  File "./tezt.py", line 10
    else:
    ^
IndentationError: expected an indented block


3 вариант:
Код

Traceback (most recent call last):
  File "./tezt.py", line 6, in <module>
    def flatten_gen(L, ltypes=collections.Sequence):
NameError: name 'collections' is not defined


4 вариант:
Код

  File "./tezt.py", line 10
    b,crap = re.subn(r'[\[,\]]', '', a)
                                      ^
TabError: inconsistent use of tabs and spaces in indentation



Это сообщение отредактировал(а) ll75 - 6.2.2018, 11:00
PM MAIL   Вверх
Romikgy
Дата 6.2.2018, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



вам бы синтаксис питона почитать...
Цитата(ll75 @  6.2.2018,  09:59 Найти цитируемый пост)
Когда запускал 1 вариант:

нет else в этом примере

Цитата(ll75 @  6.2.2018,  08:52 Найти цитируемый пост)
g = str(L).replace('[', '').replace(']', ''

скобки нет в конце..




--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
ll75
Дата 6.2.2018, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ok, let' go
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 4.10.2006
Где: musiq

Репутация: нет
Всего: 1



Спасибо, скобку поставил и первый вариант преобразовывает в 
Код

[1, 2, 3, 4, 5, 6]


а из оставшихся 3 вариантов есть правильные еще (которые тоже преобразовывают)?
PM MAIL   Вверх
Romikgy
Дата 6.2.2018, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Код

import re 
def Flatten(L):
    a = str(L)
    b,crap = re.subn(r'[\[,\]]', '', a)
    c = b.split() 
    d = [int(x) for x in c]
    return d
L = [[1, 2, 3], [4, 5], 6]
print Flatten(L)


Добавлено через 1 минуту и 11 секунд
Код

import collections
def flatten_gen(L, ltypes=collections.Sequence):
  ltype = type(L)
  l = list(L)
  i = 0
  while i < len(l):
    while isinstance(l[i], ltypes):
        if not l[i]:
            l.pop(i)
            i -= 1
            break
        else:
            l[i:i + 1] = l[i]
    else:
        yield l[i]
    i += 1
L = [[1, 2, 3], [4, 5], 6]
print [i for i in flatten_gen(L)]


Добавлено через 3 минуты и 21 секунду
Код

import collections
def flatten(L):
  for el in L:
      if isinstance(el, collections.Iterable) and not isinstance(el, basestring):
          for sub in flatten(el):
            yield sub
      else:
          yield el   
L = [[1, 2, 3], [4, 5], 6]
print [i for i in flatten(L)]



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Romikgy
Дата 6.2.2018, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Код

L = [[1, 2, 3], [4, 5], 6]
print [int(i) for i  in ';'.join([str(z) if not isinstance(z, (list, tuple)) else ';'.join([str(q)  for q in z]) for z in L]).split(';')]



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
ll75
Дата 6.2.2018, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ok, let' go
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 4.10.2006
Где: musiq

Репутация: нет
Всего: 1



Спасибо за помощь огромное!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1310 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.