3

Python で文字列の最初の母音を見つける必要があり、初心者です。最初の母音の前の文字を単語の末尾に移動し、「-ay」を追加するように指示されています。たとえば、"big" は "ig-bay" になり、"string" は "ing-stray" (基本的にはピグラタン) になります。

これは私がこれまでに持っているものです:

def convert(s):

    ssplit = s.split()
    beginning = ""
    for char in ssplit:
        if char in ('a','e','i','o','u'):
            end = ssplit[char:]
            strend = str(end)
        else:
            beginning = beginning + char
    return strend + "-" + beginning + "ay"

最初の母音を見つけた後、「if」ステートメントがさらに母音を探すのを止める方法を見つける必要があります-少なくともそれが問題だと思います。ありがとう!

4

5 に答える 5

2

物事を 1 段階ずつ分解します。

最初のタスクは、最初の母音を見つけることです。それをしましょう:

def first_vowel(s):
    for index, char in enumerate(s):
        if char in 'aeiou':
            return index
    raise Error('No vowel found')

次に、その最初の母音を使用して単語を分割する必要があります。

def convert(s):
    index = first_vowel(s)
    return s[index:] + "-" + s[:index] + 'ay'

次にテストします。

print(convert('pig'))
print(convert('string'))

実行可能な完全なコードはこちら: https://repl.it/Dijj

母音を持たない単語の例外処理は、演習として残します。

于 2016-09-27T17:16:53.277 に答える
0

break母音を見つけたらすぐにステートメントを使用できます。また、関数を使用する必要もありませんsplit()。あなたが犯した大きな間違いの 1 つはcharSubString. 代わりに を取得するには、その文字のインデックスを使用する必要がありますSubString

これを見てください:

def convert(s):
    beginning = ""
    index = 0;
    for char in s:
       if char in ('a','e','i','o','u'):
           end = str(s[index:])
           break
       else:
           beginning = beginning + char
       index = index + 1
    return str(end) + "-" + beginning + "ay"
于 2016-09-27T16:57:09.907 に答える
0

breakfor ループを終了する場所を追加します: https://docs.python.org/2/tutorial/controlflow.html

于 2016-09-27T16:53:30.633 に答える
0

Python には、ループ制御用のbreakandcontinueステートメントがあります。次のようにトリガーするブール値を設定できます。

if flag:
    break
#do code
#set flag
于 2016-09-27T16:54:00.540 に答える