1

たとえば、 を入力すると、 が返されbobますobb。同様に、次のようなものplankが私に与えるはずですankpl

s = input("What word do you want translated?")
first = s[0]
vowel = "aeiou"
for i in range (1, len(s)):
     if first in vowel:
        s = s + "way"
        print (s)
else:
        s = s[1:] + s[0]
        print (s)

これは現在私lankpにだけを与えていplankます。ありがとう!

4

5 に答える 5

4

実際にはもっと簡単にすることができます:

s = raw_input("What word do you want translated?").strip()
vowel = set("aeiou")
if vowel & set(s):
    while s[0] not in vowel:
        s = s[1:] + s[0]
    print s
else:
    print "Input has no vowels"
于 2013-11-07T05:29:07.563 に答える
1

設定first = s[0]は 1 回だけで、それはループの前に行われます。おそらく for ループ内に設定する必要があります。

于 2013-11-07T05:29:43.740 に答える
0

プログラムの問題は、elseが正しいレベルにインデントされていないためfor/elseif/else.

より効率的なアプローチを次に示します。

の場合vowels = set("aeiou")、このように最初の母音の位置を取得できます

next(i for i, j in enumerate(s) if j in vowels)

例えば:

>>> s = "plank"
>>> vowels = set("aeiou")
>>> next(i for i, j in enumerate(s) if j in vowels)
2

>>> s[2:] + s[:2]
'ankpl'

したがって、文字列を一度操作するだけで済みます。

母音がない場合、コードは永久に実行される代わりに例外を発生させます:)

>>> s="why why why?"
>>> next(i for i, j in enumerate(s) if j in vowels)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
于 2013-11-07T05:42:32.557 に答える