r 任務是將元音移動字串中包含的兩個位置,其中元音是符號 aeiou(及其大寫版本 AEIOU),如果輸入是“a cat”,則輸出是“i cit”
vowels = ["a", "e", "i", "o", "u"]
vowel=['a','e','i','o','u']
mapper = dict(zip(vowels, vowels[1:] [vowels[0]]))
message=input('enter mesaage')
new_message = ""
for letter in message:
if letter not in vowels:
new_message = letter
else:
i = vowels.index(letter)
i =2
new_message = vowels[i]
print(new_message)
這會引發索引越界錯誤
uj5u.com熱心網友回復:
您需要一個函式count_repetition來告訴您從任意位置開始有多少個連續元音。這也是vowels您應該跳過的陣列中元音的數量。可以使用vowels[(steps i 1)%size]wheresize是vowels陣列的長度和i原始元音的索引來找到新的元音。
vowels = ["a", "e", "i", "o", "u"]
def count_repetition(message, i):
# counts the number of consecutive chars starting at index i
count = 1
for j in range(i, len(message)-1):
if(message[j] == message[j 1]):
count = 1
else:
return count
return count
message = input('enter message: ')
new_message = ""
size = len(vowels)
j = 0
while(j < len(message)):
letter = message[j]
if letter.lower() not in vowels:
new_message = letter
j = 1
else:
i = vowels.index(letter)
# count number of consecutive letters
steps = count_repetition(message, j)
for _ in range(0, steps):
new_message = vowels[(steps i 1) % size]
j = steps
print(new_message)
# meeduuu -> muudooo
# a cat -> i cit
# meed -> muud
# maad -> mood
版本 2 保留大小寫
def count_repetition(message, i):
# counts the number of consecutive chars starting at index i, ignoring
# uppercase/lowercase
count = 1
for j in range(i, len(message)-1):
if(message[j].lower() == message[j 1].lower()):
count = 1
else:
return count
return count
def changeLetterCase(letter, toUpper):
# changes letter to lowercase or uppercase
# changeLetterCase('a', True) => 'A'
# changeLetterCase('A', False) => a'
if toUpper:
return letter.upper()
return letter.lower()
def solve(message):
vowels = ["a", "e", "i", "o", "u"]
SIZE = len(vowels)
new_message = ""
j = 0
while(j < len(message)):
letter = message[j].lower()
isUpperCase = message[j].isupper()
if letter not in vowels:
new_message = changeLetterCase(letter, isUpperCase)
j = 1
else:
# get position of current vowel in `vowels`
i = vowels.index(letter)
# count number of consecutive letters
steps = count_repetition(message, j)
# get replacement vowel
new_vowel = vowels[(steps i 1) % SIZE]
# update consecutive vowels taking into consideration
# uppercase/lowercase
for step in range(0, steps):
isUpperCase = message[j].isupper()
new_message = changeLetterCase(
new_vowel, isUpperCase)
j = 1
return new_message
print(solve('mUUd')) # mIId
print(solve('maaApp')) # muuUpp
print(solve('a cat')) # i cit
print(solve('meed')) # muud
print(solve('maaaad')) # maaaad
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/529000.html
