Напишите программу на Python, которая запрашивает слово (строчными буквами) в качестве входных данных и переводит слово в Pig Latin - PullRequest
0 голосов
/ 28 сентября 2019

Мне нужно написать программу на Python, которая запрашивает слово (строчными буквами) в качестве входных данных и переводит слово в Pig Latin.• Правила перевода слова на латинский язык: а) Если слово начинается с гласной , добавьте путь к концу слова.Например, иначе становится иначе.б) Если слово начинается с группы согласных , переместите их в конец слова и добавьте ay.Например, чип становится ipchay.

Моя текущая кодировка:

word = input("Enter word to translate: ")
#if the 1st letter of a word is "aeiou", add "way" to the end of the word 
if word[0] == "a" or "e" or "i" or "o" or "u":  
    print(word + "way")
elif word[0] and word[1] == "b" or "c" or "d" or "f" or "g" or "h" or "j" or "k" or "l" or "m" or "n" or "p" or "q" or "r" or "s" or "t" or "v" or "x" or "y" or "z":
    print(word + "ay")

Кажется, что моя текущая кодировка имеет некоторые проблемы, поскольку она отображает слова только с добавлением "путей«до конца слова независимо от того, является ли первая буква слова гласной или согласной.Кроме того, я не уверен, как переместить первую букву слова в конец слова, если это группа согласных и не знаю, как поступить, если первая и вторая буквы в слове образуют согласные типа"zh", "ch" и т. д.

Ожидаемый результат этой программы на Python: Введите слово для перевода: еще Слово в Pig Latin является другим.Введите слово для перевода: фишка Слово на латинском языке свиньи - ipchay.

Ответы [ 3 ]

0 голосов
/ 28 сентября 2019

'или' не работает так, как вы думаете.Он видит, верно ли то, что слева, а если нет, то «или» видит, верно ли то, что справа.Если какой-либо из них имеет значение True, то 'or' возвращает True, в противном случае он возвращает False.В вашем коде буква приводится к логическому значению, и это всегда дает True.Так что справа от 'или' всегда есть True, что означает, что ваше первое 'if' всегда будет работать.

0 голосов
/ 28 сентября 2019

Возможно, это не самый питонический ответ, но ...

Когда вы используете elif: вы добавляете к первому утверждению, поэтому оно всегда добавляет путь к концу

Используйте elif для адресации каждого гласного, а затем оператор else для обработки согласных:

vowels = ['a','e','i','o','u']
consonants = ['b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z']
word = input("Enter word to translate: ")
#if the 1st letter of a word is "aeiou", add "way" to the end of the word 
if word[0] in vowels:
    print(word + "way")

elif word[0] and word[1] in consonants:  
    print(word[2:] + word[0:2] + "ay") 

else:
    print(word[1:] + word[0] + 'ay')
0 голосов
/ 28 сентября 2019

То, как Python интерпретирует ваши if утверждения, совсем не то, что вы думаете об этом.

if word[0] == "a" or "e"

Я думаю, вы думаете об этом как:

if word[0] == ("a" or "e")

, но на самом деле он обрабатывается как

if (word[0] == "a") or ("e"): 

, поэтому не имеет значения, какое слово [0] на самом деле содержит, так как «e» (или любая непустая строка) всегда будет оцениваться какИстинно для Python, поэтому он всегда добавляет «путь».

Самый простой способ переписать if - это

if word[0] in "aeiou":

Это фактически проверяет, является ли это гласной, проверяя, еслипоявляется в строке "aeiou"

...