Как заменить гласные на другое значение? (От a до e, e до i и т. Д.) - PullRequest
1 голос
/ 07 ноября 2019

Мне нужно, чтобы пользователь мог вводить строку, и мой код должен смотреть на строку и изменять гласные. Так что все а стали э, все э стали я и так далее. Это то, что у меня есть, но я не знаю, как заставить его работать правильно.

def askForString():
    userString=str(input("Enter a string: "))
    userString=userString.lower()
    return userString

def changeVowels(theString,vowels):
    newString=[]
    #newVowels=['e','i','o','u','a']
    for i in range(len(theString)):
        if theString[i] in vowels:
            i+=newString
        newString.append(i)
    return newString

def main():
    theString=askForString()
    vowels=["a","e","i","o","u"]
    NewString=changeVowels(theString,vowels)
    print(NewString)

main()

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

Ответы [ 2 ]

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

Строка i+=newString ошибочна. i - это целое число, а newString - список. Вы не можете добавить целое число в список.

Из вопроса, который я собираю, вам необходимо заменить гласные в вашей строке следующим образом:

a -> e
e -> i
i -> o
o -> u
u -> a

У вас есть несколько способов добиться этого:

Метод 1:

inputString = input() # input returns string by default, no need to call with with str()

outputString = ""
vowels = ['a','e','i','o','u']

for character in inputString:
    if character in vowels:
        vowelIndex = vowels.index(character) # get the index of the vowel
        if vowelIndex == len(vowels)-1: # if its 'u', then we need to cycle back to 'a'
            vowelIndex = 0
        else:
            vowelIndex += 1 # if its not 'u', then just add 1 to go to next index which gives us the next vowel
        outputString += vowels[vowelIndex] # put that character into the outputString
    else:
        outputString += character  # if not vowel, then just put that character into the string.

print(outputString)

Метод 2: Использование словаря для прямого сопоставления гласной с следующей гласной

vowels = {
    "a" : "e",
    "e" : "i",
    "i" : "o",
    "o" : "u",
    "u" : "a"
}

inputString = input()
outputString = ""

for character in inputString:
    if character in vowels: # checks the a key named "character" exists in the dictionary "vowels
        outputString += vowels[character]
    else:
        outputString += character

print(outputString)
0 голосов
/ 07 ноября 2019
def changeVowels(theString, vowels):
    newString=[]
    repls = dict(zip(vowels, vowels[1:]+[vowels[0]]))
    for theLetter in theString:
        if theLetter in vowels:
            theLetter = repls[theLetter]
        newString.append(theLetter)
    return newString
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...