27

長方形の周囲を作成する関数を定義しようとしています。コードは次のとおりです。

width = input()
height = input()
def rectanglePerimeter(width, height):
   return ((width + height)*2)
print(rectanglePerimeter(width, height))

私は議論を開いたままにしたり、そのようなことをしたりしていないと思います。

4

3 に答える 3

17
width, height = map(int, input().split())
def rectanglePerimeter(width, height):
   return ((width + height)*2)
print(rectanglePerimeter(width, height))

このように実行すると、次のようになります。

% echo "1 2" | test.py
6

IDLE は単に 1 つの文字列をスクリプトに渡しているだけだと思います。1 つ目input()は、文字列全体を丸呑みすることです。への呼び出しの後にいくつかの print ステートメントを入れるとどうなるか注意してくださいinput():

width = input()
print(width)
height = input()
print(height)

ランニングecho "1 2" | test.pyプロデュース

1 2
Traceback (most recent call last):
  File "/home/unutbu/pybin/test.py", line 5, in <module>
    height = input()
EOFError: EOF when reading a line

最初の print ステートメントが文字列全体を出力することに注意してください'1 2'。の 2 番目の呼び出しでinput()EOFError(ファイルの終わりエラー) が発生します。

したがって、私が使用したような単純なパイプでは、1 つの文字列しか渡すことができません。input()したがって、呼び出しは一度しかできません。次に、この文字列を処理し、空白で分割し、文字列の断片を自分で int に変換する必要があります。それが

width, height = map(int, input().split())

します。

プログラムに入力を渡す方法は他にもあることに注意してください。端末で実行した場合は、問題なくand を別々にtest.py入力できたはずです。または、端末をシミュレートするためにpexpectを使用してプログラムを作成し、パスしてプログラム的に作成することもできます。または、argparseを使用してコマンド ラインで引数を渡し、次のようにプログラムを呼び出すことができます。1212

test.py 1 2
于 2013-07-16T12:00:25.200 に答える