2016-11-21 6 views
-1

Теперь я делаю очень маленький вопрос в HackRank о строковых манипуляциях, это очень просто, как домашнее задание. Вопрос заключается в том, чтобы превратить заданную строку в заглавные буквы, они упомянули свой вопрос так же, как нижеString заглавные буквы с python

Вам предоставляется строка. Ваша задача состоит в том, чтобы капитализировать каждое слово S.

Input Format

Одна строка ввода, содержащего строку, S.

Ограничения

0< len(s) <1000 

строка состоит из буквенно-цифровых символов и пространства. Формат вывода

Пример ввод

hello world 

Пример вывод

Hello World 

Я сделал здесь я написал сценарий на две строки из питона, и я представил его, но они сказали, что это неправильный ответ но я не могу понять, почему мой код соответствует

l=list(map(str.capitalize,input().strip(' ').split())) 
print(' '.join(l)) 

Может ли кто-нибудь сказать мне, что не так с моим кодом (он не работает в тестовых случаях 1/3/4/5 с Python 3, так) ?

+0

Пожалуйста народы ** ПРОЧТИТЕ ВОПРОС ** Операционный не просит «как», ни «лучшим способом», он спрашивает ** почему ** его код не проходит тесты на HackRank! –

ответ

0

Если вы не указываете разделитель на str.split(), «любая строка пробела является разделителем, а пустые строки удаляются из результата». Обратите внимание, что здесь «пробелы» включают в себя табуляции, символы перевода строк и т. Д.

Проблема четко не указана (нет определения того, что означает «слово»), и мы не знаем, что они используют для тестовых случаев, но я предполагаю, что они есть пара строк с новыми символами или таковыми. В любом случае: явно указав " " как разделитель делает тесты пройдены:

# Python 2 
s = raw_input() 
print " ".join(x.capitalize() for x in s.strip().split(" ")) 

# Python 3 
s = input() 
print(" ".join(x.capitalize() for x in s.strip().split(" "))) 
+0

Спасибо, много сэр. Наконец мой код тоже работал. Спасибо, сэр! 'l = list (map (str.capitalize, input(). strip ('') .split (''))) print ('.join (l))' –

+0

Теперь, когда вы знаете, почему ваш код не прошел , вы можете прочитать ответ Патрика Хога ... который, хотя и не отвечает на ваш вопрос, по-прежнему является питоническим способом для использования всех слов в строке. –

1

Использование str.title

>>>'aba aba'.title() 
'Aba Aba' 
+0

Как это отвечает на вопрос? –

+0

Это не решает начальную проблему – Ravenix

+0

@brunodesthuilliers http://meta.stackexchange.com/a/66378 –

-1

Я полагаю, ошибка на input(). Если HackRank использует python 2.7, это попытается оценить ввод, а не вернуть строку. Таким образом, вход hello world попытается оценить эту строку, что является бессмыслицей. Если вы попробуете raw_input() вместо этого, это должно устранить эту проблему.

+0

Я только что попробовал проблему на HackRank, и у вас есть выбор Python 2 или Python 3.Я предполагаю, что ОП представила это как Python 2. –

+0

no я использовал python 3. Я дважды проверил его на HackRank –

+0

Хорошо, что он не работает в тестовых случаях 1/3/4/5 с Python 3, поэтому 'input()' не является виновником. –

Смежные вопросы