Почему это не работает? '' .join ('' .join (string) .split (). remove (str [n])) - PullRequest
0 голосов
/ 25 октября 2011

Я играю с codingbat.com,, и я нашел эту действительно простую проблему решить, поэтому я начал пытаться играть в гольф для новичков с кодом.

Если задана непустая строка и int n, вернуть новую строку, где char с индексом n был удален. Значение n будет допустимым индексом символа в исходной строке (т.е. n будет в диапазоне 0..len (str) -1 включительно).

missing_char («котенок», 1) → «ktten»
missing_char («котенок», 0) → 'itten'
missing_char ('котенок', 4) → 'kittn'

Код Das:

def missing_char(str, n):
  return ''.join(' '.join(str).split().remove(str[n]))

Как ни странно, Python не будет это интерпретировать.
Почему нет?

Ответы [ 3 ]

11 голосов
/ 25 октября 2011

Это потому, что remove возвращает None.Большинство (все?) Встроенных функций в python, которые изменяют значение, возвращают None.

Поэтому ваш внешний join ничего не пытается объединить.

8 голосов
/ 25 октября 2011

Не прямой ответ на ваш вопрос, но это кажется очень сложным способом сделать ломтик ...

def missing_char(s, n):
    return s[:n] + s[n+1:]
1 голос
/ 25 октября 2011

Гольф версия

missing_char=lambda s,n:s[:n]+s[n+1:]
...