Юникод является подходящим типом здесь. В документах JSONDecoder описывается таблица преобразования и указано, что строковые объекты json декодируются в объекты Unicode
https://docs.python.org/2/library/json.html#encoders-and- декодеры
JSON Python
==================================
object dict
array list
string unicode
number (int) int, long
number (real) float
true True
false False
null None
"определяет кодировку, используемую для интерпретации любых объектов str, декодированных этим экземпляром (по умолчанию UTF-8)."
Я бы подошел к нему так же, как вы предполагали, в результате получив код ниже.
Короче, проверьте первый символ строки. Если это не гласный (not in ['a','e','i','o','u'
]), переместите символ в конец строки. Продолжайте делать это до тех пор, пока вы не нажмете гласный (так что «строка» станет «trings», а затем «ringst», а затем «ingstr», прежде чем пробить цикл). Когда вы, наконец, нажмете гласную, вы оставите цикл и напечатаете измененную строку + 'ay'. Если первый символ является гласным, вы оставляете цикл и печатаете строку + 'ay'.
Нет необходимости устанавливать согласную проверку - вы всегда проверяете первый символ (0). И нет необходимости иметь две переменные - просто продолжайте изменять и заменять исходную строку.
word_string = input("Input a word: ")
while word_string[0] not in ['a','e','i','o','u']:
word_string = word_string[1:] + word_string[0:1]
else:
print(word_string + 'ay')
Это не прямой ответ на ваш вопрос, но мое решение проблемы свинья-латина. Изучая python, я обнаружил, что поиск завершенных примеров очень помог.
word = "snake"
import string
# Create a list of vowels an consonants
vowels = ['a','e','i','o','u','y']
vowels += [v.upper() for v in vowels]
consonants = [x for x in string.ascii_letters if x not in vowels]
if word[0] in consonants:
# Find the first vowel
idx = min([word.find(v) for v in vowels if word.find(v)>0])
# Split the word at this point and add 'ay'
word = word[idx:] + word[:idx] + 'ay'
print(word)
# Returns "akesnay"
Я думаю, что ваша логика в целом немного испорчена. Я предлагаю решить эту проблему следующим образом:
1.) Проверьте, чтобы первая буква была согласным, если нет, ничего не делайте, если это так, перейдите к шагу 2
2.) Найдите все согласные в слове и сохраните их в списке
3.) Если это так, удалите гласные из слова, а затем добавьте все согласные в конец, затем by 'ay'.
Есть бесконечные способы реально реализовать это, и я думаю, что было бы хорошим упражнением для вас, чтобы попытаться реализовать его самостоятельно, но дайте мне знать, если вам нужна дополнительная помощь.