3

次のプログラムの目的は、4文字の単語をからに変換する"This"こと"T***"です。私はそのリストとlenを機能させるのに苦労しました。

問題は、プログラムが回答を1行ずつ出力することです。とにかく、出力をリストに保存して、それを全文として印刷できるのではないかと思います。

ありがとう。

#Define function to translate imported list information
def translate(i):
    if len(i) == 4: #Execute if the length of the text is 4
        translate = i[0] + "***" #Return ***
        return (translate)
    else:
        return (i) #Return original value

#User input sentense for translation
orgSent = input("Pleae enter a sentence:")
orgSent = orgSent.split (" ")

#Print lines
for i in orgSent:
    print(translate(i))
4

3 に答える 3

3

リスト内包表記とjoin方法を使用します。

translated = [translate(i) for i in orgSent]
print(' '.join(translated))

リスト内包表記は、基本的に関数の戻り値をリストに格納します。たとえば、次のようなことができます。

print([i**2 for i in range(5)])
# [0, 1, 4, 9, 16]

このmap関数も役立つ可能性があります。つまり、関数をiterableの各要素に「マップ」します。Python 2では、リストを返します。ただし、Python 3(使用していると思います)では、mapオブジェクトを返します。これは、関数に渡すことができる反復可能でもありjoinます。

translated = map(translate, orgSent)

このjoinメソッドは、括弧内のiterableの各要素を、の前の文字列と結合します.。例えば:

lis = ['Hello', 'World!']
print(' '.join(lis))
# Hello World!

スペースに限らず、次のようなクレイジーなことをすることができます。

print('foo'.join(lis))
# HellofooWorld!
于 2013-01-20T04:07:43.853 に答える
3

,py 2.xでは、後にを追加できますprint

for i in orgSent:
    print translate(i),

py 3.xを使用している場合は、次を試してください。

for i in orgSent:
    print(translate(i),end=" ")

のデフォルト値endはnewline(\n)です。そのため、各単語は新しい行に出力されます。

于 2013-01-20T04:14:44.477 に答える
1
sgeorge-mn:tmp sgeorge$ python s
Pleae enter a sentence:"my name is suku john george"
my n*** is s*** j*** george

で印刷する必要があります,。以下の貼り付けられたコード部分の最後の行を参照してください。

#Print lines
for i in orgSent:
    print (translate(i)),

あなたのより多くの理解のために:

sgeorge-mn:~ sgeorge$ cat tmp.py 
import sys
print "print without ending comma"
print "print without ending comma | ",
sys.stdout.write("print using sys.stdout.write ")

sgeorge-mn:~ sgeorge$ python tmp.py 
print without ending comma
print without ending comma | print using sys.stdout.write sgeorge-mn:~ sgeorge$
于 2013-01-20T04:11:04.967 に答える