1. ホーム
  2. python

[解決済み] Python - Pyg Latin?

2022-02-17 08:49:12

質問

Codecademyのpig latin convertorを拡張して、単一単語だけでなく文章を受け入れて、文章中の各単語を変換するようにしようとしています。以下は、私が持っているコードです。

pyg = 'ay'

pyg_input = raw_input("Please enter a sentence: ")
print

if len(pyg_input) > 0 and pyg_input.isalpha():
    lwr_input = pyg_input.lower()
    lst = lwr_input.split()
    for item in lst:
        frst = lst[item][0]
        if frst == 'a' or frst == 'e' or frst == 'i' or frst == 'o' or frst == 'u':
            lst[item] = lst[item] + pyg
        else:
            lst[item] = lst[item][1:len(lst[item]) + frst + pyg
    print ' '.join(lst)

何が悪いのかよく分からないので、ご教授いただければ幸いです。 ありがとうございます。

解決方法を教えてください。

  • 文はアルファベット以外(例えばスペース)を含むことができます: そのため pyg_input.isalpha() は False を返します。
  • あなたが使っているのは lst[item] を使用して各文字にアクセスします。代わりに item .
  • リストを反復している間は、リストを更新することはできません。次のコードでは latin .
  • あなたのコードには、次の行でSyntaxErrorがあります(閉じ括弧がない)。

    lst[item][1:len(lst[item])
    
    
  • 以下のコードは完璧ではありません。例えば、以下のようなアルファベット以外をフィルタリングする必要があります。 , , . , ...


pyg = 'ay'

pyg_input = raw_input("Please enter a sentence: ")
print

if len(pyg_input) > 0:# and pyg_input.isalpha():
    lwr_input = pyg_input.lower()
    lst = lwr_input.split()
    latin = []
    for item in lst:
        frst = item[0]
        if frst in 'aeiou':
            item = item + pyg
        else:
            item = item[1:] + frst + pyg
        latin.append(item)
    print ' '.join(latin)