0

これまでの私のコード:

untranslated = open('english.txt','r')
vowels = ('a','e','i','o','u')
newWords = []

for lines in untranslated:
    words = lines.split()
    for word in words:
        if word[0] in vowels:
            word = word + 'yay'
        else:
            while word[0] not in vowels:
                word = word[1:] + word[0]
            word = word + 'ay'
        print(word)

english.txt ファイルの内容:

these are lines
meant to be translated
to piglatin

これまでのところ、すべての単語を翻訳しましたが、問題は、入力されたのと同じ行に戻らないことです。

最終結果を次のようにしたい:

esethay areyay ineslay
eantmay otay ebay anslatedtray
otay iglatinpay

どうすればこれを行うことができますか?

私が得ているものは次のとおりです。

esethay
areyay
ineslay
eantmay
otay
ebay
anslatedtray
otay
iglatinpay
4

2 に答える 2

1

最初にリストを作成してから、要素を印刷することをお勧めします。

for lines in untranslated:
    latin = []
    words = lines.split()
    for word in words:
        if word[0] in vowels:
            word = word + 'yay'
        else:
            while word[0] not in vowels:
                word = word[1:] + word[0]
            word = word + 'ay'
        latin.append(word)
    print(' '.join(latin))

これにより、行ごとに新しいリストが作成されます。結果の単語がリストに追加され、単語を a で結合して' '出力します。

于 2013-02-23T03:00:54.677 に答える
0

1行に1つの単語を印刷しています。1行に1文を印刷する場合は、次を使用できますjoin

pl_words = []

for word in words:
   ...
   pl_words.append(word)

print(' '.join(pl_words))

または:endへのキーワード引数print

    print(word, end=' ')

print()  # To make a new line

しかし、私は正規表現でそれを行います:

import re

words = '''
    these are lines
    meant to be translated
    to piglatin
'''

vowels = 'aeiou'

def pig_latinize(word):
    if word[0] in vowels:
        return word + 'yay'

    while word[0] not in vowels:
        word = word[1:] + word[0]

    return word + 'ay'

def replacer(match):
    return pig_latinize(match.group())

print(re.sub(r'(\w+)', replacer, words))
于 2013-02-23T03:01:48.477 に答える