入力を収集する

完了

ここまでで、Python プログラミング言語のさまざまな構成要素について学習しました。 また、いくつかのプログラムも作成しました。 ただし、プログラムはデータに対して動作し、そのデータはどこか別の場所から入ってきます。 このユニットでは、コマンドラインから、およびユーザー入力から入力を収集する方法について詳しく見ていきます。

コマンド ライン入力

python3 を使用してプログラムを開始する場合、開始するファイルの名前を指定します。 また、実行時にプログラムがアクセスできるデータを引数のセットとして指定することもできます。 これは次のようになります。

python3 backup.py 2023-01-01

前のコードでは、文字列 "2023-01-01" をプログラム backup.py に指示として使用し、その日付からバックアップを開始することができます。 コマンドライン引数を使用すると、柔軟性が得られます。 プログラムは外部の入力によって異なる動作を実行できます。

コマンド ライン引数

これらのコマンドは、コーディング側でどのようにキャプチャされるでしょうか。 sys モジュールを使用すると、コマンドライン引数を取得してプログラムで使用することができます。 次のコードを見てください。

import sys

print(sys.argv)
print(sys.argv[0]) # program name
print(sys.argv[1]) # first arg

sys.argv は配列で、つまり多くの項目を含むデータ構造です。 配列で 0 として示されている先頭の位置にはプログラム名が格納されています。 2 番目の位置 1 には最初の引数が格納されています。 プログラム backup.py にサンプル コードが含まれており、次のように実行するとします。

python3 backup.py 2023-01-01

その後、プログラムによって次の結果が得られます。

['backup.py', '2023-01-01'] 
backup.py
2023-01-01

ユーザー入力

プログラムにデータを渡すもう 1 つの方法は、ユーザーにデータを入力させることです。 コードを記述して、ユーザーに情報を入力するようプログラムから指示することができます。 入力したデータをプログラムに保存し、後で操作します。

ユーザーからの情報を取得するには、input() 関数を使用します。 次に例を示します。

print("Welcome to the greeter program")
name = input("Enter your name: ")
print("Greetings " + name)

プログラム input.py にサンプル コードが含まれており、次のように実行するとします。

python3 input.py

プログラムを実行すると、次のように名前を入力するよう求められます。

Welcome to the greeter program
Enter your name: 

値を入力して Enter キーを押した後、あいさつ文が返されます。

Welcome to the greeter program
Enter your name: Picard
Greetings Picard

数値の操作

input() 関数では、結果が文字列として格納されます。そのため、次のコードでは望みの動作が行われないことがあります。

print("calculator program")
first_number = input("first number: ")
second_number = input("second number: ")
print(first_number + second_number)

このプログラムを実行すると、最初の番号 (3) を入力するよう求められます。

calculator program
first number: 3

Enter キーを押した後、2 番目の数値 (4) を入力できます。

calculator program
first number: 3
second number: 4

Enter キーを押すと、次の結果が得られます。

calculator program
first number: 3
second number: 4
34

このプログラムでは、34 ではなく 7 の回答が得られることがおそらく期待されています。 では、何が問題なのでしょうか。

ここでの説明は、first_numbersecond_number が文字列であることです。 計算が正しく機能するためには、int() 関数を使用 して、これらの文字列を数値に変更する必要があります。 int() を使用するようにプログラムの最終行を変更することで、問題を解決できます。

print(int(first_number) + int(second_number))

同じ値を使用してプログラムを再実行すると、応答として 7 が返されるようになりました。

calculator program
first number: 3
second number: 4
7