Как преобразовать следующий вывод кода в одну строку с помощью соединения в python .. в настоящее время для ввода двух слов я получаю вывод в двух строках

def cat_latin_word(text):
    """ convert the string in another form
    """

    constant = "bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ"

    for word in text.split():
        if word[0] in constant:
            word = (str(word)[-1:] + str(word)[:4] + "eeoow")
        else:
            word = (str(word) + "eeoow")
        print(word)



def main():
    """ converts"""
    text = input("Enter a sentence ")
    cat_latin_word(text)

main()

вы можете добавить какой-нибудь образец вывода, которого вы ожидаете?

Vikas P 10.09.2018 11:06

Я вижу вескую причину для использования join, но почему только на одной строке?

cdarke 10.09.2018 11:06

Я получаю вывод правильно .. это для ввода ankit jaiswal..outtput is ankiteeoow ljaiseeoow, но я хочу, чтобы он был в одной строке

Ankit Jaiswal 10.09.2018 11:07

Вопрос @cdarke исправлен. Я хочу выводить в одну строку. В настоящее время я получаю разделенный вывод.

Ankit Jaiswal 10.09.2018 11:14

@VikasDamodar, я ожидаю вывода в одну строку .. не разделен на две строки или более

Ankit Jaiswal 10.09.2018 11:16
1
5
324
3

Ответы 3

Несколько указателей:

  • Преобразование вашего кода в «одну строку» не делает его лучше.
  • Нет необходимости вводить все согласные, используйте модуль string и используйте set для сложности поиска O (1).
  • Используйте форматированные строковые литералы (Python 3.6+) для более удобочитаемого и эффективного кода.
  • Нет необходимости использовать str для переменных, которые уже являются строками.
  • Для одной строки вы можете использовать понимание списка с тернарным оператором и ' '.join.

Вот рабочий пример:

from string import ascii_lowercase, ascii_uppercase

def cat_latin_word(text):

    consonants = (set(ascii_lowercase) | set(ascii_uppercase)) - set('aeiouAEIOU')

    print(' '.join([f'{word}eeow' if not word[0] in consonants else \
                    f'{word[-1:]}{word[:4]}eeoow' for word in text.split()]))

text = input("Enter a sentence ")
cat_latin_word(text)

Вы можете использовать список для размещения всех слов или использовать Распечатать() по-другому. Пример:

print(word, end="\t")

где здесь я использую аргумент ключевого слова end, чтобы установить его на '\t' (по умолчанию это '\n')

Просто отредактировал свой код, чтобы вернуть результаты в виде слов, разделенных пробелом.

def cat_latin_word(text):
    constant = "bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ"
    result = []
    for word in text.split():
        if word[0] in constant:
            word = (str(word)[-1:] + str(word)[:4] + "eeoow")
            result.append(word)
        else:
            word = (str(word) + "eeoow")
            result.append(word)

    return ' '.join(result)

def main():
    text = 'ankit jaiswal'
    print(cat_latin_word(text))

вывод не поступает правильно.Только одно слово преобразуется

Ankit Jaiswal 10.09.2018 11:28

Другие вопросы по теме