Страницы

Поиск по вопросам

пятница, 27 декабря 2019 г.

Разделить строку на слова и вывести их на печать по одному

#python #python_3x


Как сделать программу, используя функцию. Вводишь строку из несколько слов с пробелами.
Находишь все слова и выводишь все слова отдельными строчками. Что я делаю не так?

str1 = str(input())
i = 0
k = 0
list = []

def space(str1):
 return(str1)
 while k <= len(str1):
  if str1(i) != " ":
   list.append(str(i))
   return(list)
  i += 1
  k += 1

mini_list = space(str1)
print(mini_list)

    


Ответы

Ответ 1



Находишь все слова Зря вы перебираете строку посимвольно в поисках пробелов. Во-первых, бывают и другие пробельные символы, например, неразрывный пробел или табуляция. Они тоже разделяют строку на слова. Во-вторых, для деления строки на слова в Python 3 есть метод str.split(). Он разбивает строку по заданному разделителю, а если не указывать разделитель (т.е. по умолчанию) — по пробельным символам (конкретно: space, tab, newline, return, formfeed). Возвращает список строк, на которые поделил исходную. Вот так: words = input().split() Заметьте, что str(input()) не нужно, input() и так возвращает строку. Чтобы вывести каждое слово, достаточно перебрать список и каждое напечатать. for word in words: print(word) Оба действия можно объединить для лаконичности: for word in input().split(): print(word)

Ответ 2



Как сказал Igor Sergeevich можно воспользоватся стандартным методом для работы со строками. Но так как я вижу что вы пытаетесь сделать это в ручную, предложу такой вариант: In [15]: def foo(string): ...: Flag = False ...: for i in string: ...: if i != ' ': ...: if Flag: ...: print() ...: print(i, end='') ...: Flag = False ...: else: ...: Flag = True Использование: In [18]: foo('string for example') Результат: string for example

Ответ 3



Можно так: list(map(print, input().split(' ')))

Ответ 4



Вот так можно: single_line = raw_input() # разбить по пробелам, склеить обратно по LFам words_in_lines = '\n'.join(single_line.split()) # если между словами ровно по одному пробелу words_in_lines = single_line.replace(' ', '\n') # если там серии пробелов words_in_lines = re.sub(r'\s+', '\n', single_line) print words_in_lines

Ответ 5



Это можно сделать значительно проще, пользуясь методами работы со строками: new_list = my_str.split(' ') А ваша не работает из-за return перед циклом, интерпретатор прекращает выполнять функцию, возвращает ответ и не входит в цикл, return надо переместить в конц функции.

Ответ 6



Также можно обратиться к регуляркам: text = input() # "1 2 4 555" import re for x in re.split(r'\s+', text): print(x) Консоль: 1 2 4 555

Комментариев нет:

Отправить комментарий