0

私のコースでは、講師が「インポート」機能を使用することを望んでいないことを発見しました。これは、明らかに「現時点で学生のニーズに対して高度すぎる」ためです。

私が「許可」されているものをいじって、これを思いつきました:

#!/usr/bin/python
moo = raw_input ('moo ')
string = ''.join(moo) 
outp = string.split() 
for word in outp:
  print word

それは私に与えます

$ ./pecho
moo hello       world
hello
world

「hello world」の出力を 1 行に収めるために、ここにあるものをいじるにはどうすればよいですか?


元の投稿:

「それぞれの引数を1つのスペースで区切って単純に出力する」pythonファイルを作成する必要があります。たとえば、次のコマンドを実行すると、次のような出力が得られます。

$ pecho first    and  then    another    one
first and then another one
$

これは単に次のようなものですか

#!/usr/bin/python
moo = raw_input ('moo ')
print moo

? その場合、入力にタブ/スペースがいくつあるかに関係なく、出力の単語間にスペースを1つだけ出力するようにするにはどうすればよいですか?

4

1 に答える 1

3

修正された質問への回答は次のとおりです。

moo = raw_input ('moo ')
print ' '.join(moo.split())

括弧の内側から始めて、最初に入力mooを取得し、空白に基づいて断片に分割します。sys.argvこれにより、古い回答と同様に、反復可能なリストが得られます。

次に、join と 1 つのスペースを使用してそのリストを結合します。次に、取引全体を印刷します。

これをよりよく理解するために、これは同じことですが、より多くの行を使用しています。

moo = raw_input('moo ')
temp_list = moo.split()
print ' '.join(temp_list)

temp_list も印刷してみて、どのように見えるかを確認してください。

これを最後の行として追加するだけで、リストがどのように出力されるかを確認できます:

print temp_list

おそらくこれが必要です:

import sys

if len(sys.argv) > 1:
    for arg in sys.argv[1:]:
        print arg,

sys.argv は、コマンド ライン引数のリストです。最初のものはスクリプトの名前です。

リストは反復可能な型であるため、forループを使用して反復できます。リストを分割して、2 番目の項目から始めます。

印刷行の最後にコンマを使用して、python に改行を印刷しないように指示します。Python 3 でそれを行う別の方法があります。

Python 3では、最後の行は次のようになります。

print(arg, end=" ")

Dan Dの例を使用するには、次のようにします。

import sys

if len(sys.argv) > 1:
    print ' '.join(sys.argv[1:])

スクリプト名よりも少なくとも 1 つ多くの引数があることを確認するためにテストできます。各アイテムの間にスペースを入れて反復可能なリストを結合します。

于 2012-05-06T03:43:22.740 に答える