2015-10-13 6 views
1

Итак, я пытаюсь создать функцию, которая вызывает две функции внутри функции, где одна функция, называемая «encode», проверяет, является ли первая буква слова гласной, и если да, то это будет добавьте «путь» в конец слова, и если слово начинается с согласного, оно переместит первую букву в третью позицию в слове и добавит gar.Создание функции, которая преобразует предложение в Python

моя проблема заключается в создании этой функции, вызывающей функцию кодирования, для чтения предложения и изменения каждого слова соответственно на основе первой буквы.

So here are some text cases for the function: 

encode() function: 
The output will look like this: 
Please enter your message: python is fun 
The secret message is: ythonpar isway unfar 

translation is correct when words are separated by more than one space character. 
Please enter your message: simple  is better than complex 
The secret message is: implesar isway etterbar hantar omplexcar 

Вот мой сценарий. Они должны быть связаны.

def get_input(): 
    user_input = input('Please enter a message: ') 
    more_message = True 
    while more_message: 
     user_input = input('Please enter a message: ') 
     if not user_input==' ': 
      more_grades = False 
     return 


def starts_with_vowel(word): 
    while True: 
     data = word 
     the_vowel = "aeiou" 
     if word[0].lower() in the_vowel: 
      print ('true') 
     else: 
      print ('false') 
     return 


def encode(word): 
    while True: 
     data = starts_with_vowel(word) 
     the_vowel = "aeiou" 
     if word[0].lower() in the_vowel: 
      new_word=word+'way' 
      print ('The secret word is:',new_word) 
     else: 
      new_word2=word+'ar' 
      scrambled_word=new_word2[1:-2]+new_word2[0]+new_word2[3]+new_word2[4] 
      print (scrambled_word) 
      print ('The secret word is:',new_word2) 
     return 


def translate(text): 
    secret_message= encode(text) 
    return (secret_message) 

translate('gin is a boy') 
+0

вопрос только в том, что с 'while True:' строки в функциях ...? –

+0

Я новичок в этом, поэтому я использовал цикл, чтобы проверить, содержит ли это слово определенные атрибуты. ЕСЛИ у вас есть лучший способ сделать это или знать правильный путь. Пожалуйста, дайте мне знать, чтобы я мог улучшить свой код. – ABaut

+2

С этим кодом существует ряд проблем с стилем и логикой. –

ответ

0

Лучше было бы использовать разделение на предложении (вход) и петля над словами:

vowels = 'aeiou' 
sentence = 'python is fun' 
new_words = [] 

for word in sentence.split(): 
    if word[0].lower() in vowels: 
    new_words.append(word+'way') 
    else: 
    new_words.append(word[1:3]+word[0]+word[3:]+'gar') 

' '.join(new_words) 

'ytphongar isway unfgar' 
+0

Благодарим за фиксацию детали! :) – ABaut

+0

Да, изначально был опубликован некоторый непроверенный код: P –

0

Я думаю, что в первой части кода, вам нужно будет изменить more_grades раздел с more_message, потому что сначала не_инициализация не была инициализирована, а more_messages контролирует ваш цикл, поэтому я думаю, что это то, что вы хотели сделать. Не волнуйтесь, я считаю, что это только одна ошибка, которую я поймал. Я проверю остальную часть кода и вернусь к вам. Не подчеркивайте это. Хорошее кодирование :-)

+0

Я новичок в кодировании, и я стараюсь научиться писать код на python. – ABaut

+0

Можете ли вы направить мне проблему, которую вы должны решить, это неясно, что вы пытаетесь сделать, просто прочитав свой код. Поэтому я могу помочь вам дальше. Не подчеркивайте, имея в виду ссылку на проблему, которую вы должны решить, И я понимаю, как это может быть для вас неприятно, я был там, ха-ха, не волнуйтесь, это определенно станет легче, и вы полюбите это просто не позволяет разочарованию и стрессу от скуки, это те чувства, которые приходят ко всем нам на пути к овладению. Счастливое кодирование :-) –

+0

@ABaut checkout [Code Academy] (https://www.codecademy.com/learn) –

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