Программа Pig Latin в Python - PullRequest
0 голосов
/ 07 января 2019

Напишите программу на Python 3, которая преобразует набранное пользователем предложение в Pig Latin. Свинья латинская имеет два правила:

Если слово начинается с согласного, то все согласные перед первым гласные переводятся в конец слова, а буквы «ай» затем добавлено в конец. например "монета" становится "oincay" и "флейта" становится "Uteflay". Если слово начинается с гласной, то к конец. например, «яйцо» становится «eggyay», а «дуб» становится «oakyay».

Мой код работает для отдельных слов, но не работает для предложения. Я попытался ввести:

wordList = word.lower().split(" ")
    for word in wordList:

но это не работает.

#Pig Latin Program
import sys
VOWELS = ('a', 'e', 'i', 'o', 'u')

def pig_latin(word):
    if (word[0] in VOWELS):
       return (word +"yay")
    else:
       for letter in word:
          if letter in VOWELS:
             return (word[word.index(letter):] + word[:word.index(letter)] + "ay")
    return word

word = ""   
while True:
    word = input("Type in the word or Exit to exit:")
    if (word == "exit" or word == "Exit" or word == "EXIT"):
        print("Goodbye")
        sys.exit()
    else:
        print(pig_latin(word))

Входное предложение: the rain in Spain

Выходное предложение: ethay ainray inyay ainSpay

1 Ответ

0 голосов
/ 07 января 2019

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

import sys

VOWELS = ('a', 'e', 'i', 'o', 'u')

def pig_latin(word):
  wordList = word.lower().split(" ")
  for word in wordList:
    if (word[0] in VOWELS):
      yield (word +"yay")
    else:
      for letter in word:
        if letter in VOWELS:
          yield (word[word.index(letter):] + word[:word.index(letter)]+ "ay")
          break

word = ""
while True:
    word = input("Type in the word or Exit to exit:")
    if (word == "exit" or word == "Exit" or word == "EXIT"):
        print("Goodbye")
        sys.exit()
    else:
        print(' '.join(pig_latin(word)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...