#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
Комментариев нет:
Отправить комментарий