前書き
Pythonプログラミング言語は、数値を操作したり数式を評価したりするときに使用する優れたツールです。 この品質は、有用なプログラムを作成するために利用できます。
このチュートリアルでは、Python 3で簡単なコマンドライン計算プログラムを作成するための学習演習を示します。 このプログラムを作成する方法は1つありますが、コードを改善し、より堅牢な計算機を作成する多くの機会があります。
math operators、variables、conditional statements、functionsを使用し、ユーザー入力を処理して計算機を作成します。
前提条件
このチュートリアルでは、ローカルコンピューターにPython 3をインストールし、コンピューターにプログラミング環境をセットアップする必要があります。 Pythonをインストールするか、環境をセットアップする必要がある場合は、appropriate guide for your operating systemを実行することで実行できます。
[[step-1 -—- prompt-users-for-input]] ==ステップ1—ユーザーに入力を求める
計算機は、人間がコンピューターが解く方程式を提供するときに最適に機能します。 人間がコンピューターで操作したい数字を入力した時点で、プログラムの作成を開始します。
これを行うには、キーボードからのユーザー生成入力を受け入れるPythonの組み込みinput()
関数を使用します。 input()
関数の括弧内に、stringを渡してユーザーにプロンプトを表示できます。 ユーザーの入力を変数に割り当てます。
このプログラムでは、ユーザーに2つの数字を入力してもらいたいので、プログラムに2つの数字を入力してもらいましょう。 入力を求めるときは、ユーザーの入力とプロンプト文字列の間にスペースができるように、文字列の最後にスペースを含める必要があります。
number_1 = input('Enter your first number: ')
number_2 = input('Enter your second number: ')
2行を記述した後、実行する前にプログラムを保存する必要があります。 このプログラムをcalculator.py
と呼ぶことができ、ターミナルウィンドウで、コマンドpython calculator.py
を使用してプログラミング環境でプログラムを実行できます。 各プロンプトに応答して、ターミナルウィンドウに入力できるはずです。
OutputEnter your first number: 5
Enter your second number: 7
このプログラムを数回実行して入力を変えると、プロンプトが表示されたときに、単語、記号、空白、または単にEnterキーなど、必要なものを入力できることに気付くでしょう。 これは、input()
がデータをstringsとして取り込み、数値を探していることを認識していないためです。
このプログラムでは、1)プログラムで数学的計算を実行できるようにするため、および2)ユーザーの入力が数値文字列であることを検証するために、このプログラムで数字を使用します。
電卓のニーズに応じて、input()
関数からの文字列を整数または浮動小数点数に変換したい場合があります。 私たちにとって、整数は目的に合っているので、int()
関数のinput()
関数をinteger data typeへの入力のconvertにラップします。
calculator.py
number_1 = int(input('Enter your first number: '))
number_2 = int(input('Enter your second number: '))
ここで、2つの整数を入力しても、エラーは発生しません。
OutputEnter your first number: 23
Enter your second number: 674
ただし、文字、記号、またはその他の整数以外を入力すると、次のエラーが発生します。
OutputEnter your first number: sammy
Traceback (most recent call last):
File "testing.py", line 1, in
number_1 = int(input('Enter your first number: '))
ValueError: invalid literal for int() with base 10: 'sammy'
これまで、整数データ型の形式でユーザー入力を保存するために2つの変数を設定しました。 入力を浮動小数点数に変換することもできます。
[[step-2 --- adding-operators]] ==ステップ2—演算子の追加
プログラムが完了する前に、合計4つのmathematical operatorsを追加します。加算用に+
、減算用に-
、乗算用に*
、および/
です。分割のため。
プログラムを構築する際、各部分が正しく機能していることを確認したいので、ここでは追加の設定から始めます。 印刷機能内に2つの数値を追加して、計算機を使用している人が出力を表示できるようにします。
calculator.py
number_1 = int(input('Enter your first number: '))
number_2 = int(input('Enter your second number: '))
print(number_1 + number_2)
プログラムを実行して、プロンプトが表示されたら2つの数字を入力して、期待どおりに機能することを確認します。
OutputEnter your first number: 8
Enter your second number: 3
11
出力は、プログラムが正常に動作していることを示しているので、プログラムのランタイム全体を通じてユーザーに完全に通知されるように、さらにコンテキストを追加しましょう。 これを行うために、string formattersを使用して、テキストを適切にフォーマットし、フィードバックを提供します。 ユーザーは、入力した番号と、生成された結果と一緒に使用されている演算子に関する確認を受信する必要があります。
calculator.py
number_1 = int(input('Enter your first number: '))
number_2 = int(input('Enter your second number: '))
print('{} + {} = '.format(number_1, number_2))
print(number_1 + number_2)
これで、プログラムを実行すると、プログラムで実行されている数式をユーザーが確認できる追加の出力が得られます。
OutputEnter your first number: 90
Enter your second number: 717
90 + 717 =
807
文字列フォーマッタを使用すると、より多くのフィードバックがユーザーに提供されます。
この時点で、追加に使用したのと同じ形式で残りの演算子をプログラムに追加できます。
calculator.py
number_1 = int(input('Enter your first number: '))
number_2 = int(input('Enter your second number: '))
# Addition
print('{} + {} = '.format(number_1, number_2))
print(number_1 + number_2)
# Subtraction
print('{} - {} = '.format(number_1, number_2))
print(number_1 - number_2)
# Multiplication
print('{} * {} = '.format(number_1, number_2))
print(number_1 * number_2)
# Division
print('{} / {} = '.format(number_1, number_2))
print(number_1 / number_2)
上記のプログラムに、残りの演算子-
、*
、および/
を追加しました。 この時点でプログラムを実行すると、プログラムは上記のすべての操作を実行します。 ただし、一度に1つの操作のみを実行するようにプログラムを制限します。 これを行うには、条件ステートメントを使用します。
[[step-3 -—- adding-conditional-statements]] ==ステップ3—条件ステートメントの追加
calculator.py
プログラムでは、ユーザーがさまざまな演算子から選択できるようにします。 そのため、まずはプログラムの上部に情報を追加し、選択する項目を選択して、ユーザーが何をすべきかを理解できるようにします。
三重引用符を使用して、いくつかの異なる行に文字列を記述します。
'''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
'''
ユーザーが選択できるように各演算子記号を使用しているため、ユーザーが除算を実行したい場合は、/
と入力します。 ただし、1 for addition
やb for subtraction
など、必要な記号を選択できます。
ユーザーに入力を求めているので、input()
関数を使用します。 文字列をinput()
関数内に配置し、その入力の値を変数に渡します。変数にはoperation
という名前を付けます。
calculator.py
operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
''')
number_1 = int(input('Enter your first number: '))
number_2 = int(input('Enter your second number: '))
print('{} + {} = '.format(number_1, number_2))
print(number_1 + number_2)
print('{} - {} = '.format(number_1, number_2))
print(number_1 - number_2)
print('{} * {} = '.format(number_1, number_2))
print(number_1 * number_2)
print('{} / {} = '.format(number_1, number_2))
print(number_1 / number_2)
この時点で、プログラムを実行する場合、最初のプロンプトで何を入力してもかまいません。そのため、条件ステートメントをプログラムに追加しましょう。 プログラムの構成方法により、if
ステートメントは加算が実行される場所になり、他の各演算子には3つのelse-ifまたはelif
ステートメントがあり、%(t2 )sステートメントは、人が演算子記号を入力しなかった場合のエラーを処理するために配置されます。
calculator.py
operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
''')
number_1 = int(input('Enter your first number: '))
number_2 = int(input('Enter your second number: '))
if operation == '+':
print('{} + {} = '.format(number_1, number_2))
print(number_1 + number_2)
elif operation == '-':
print('{} - {} = '.format(number_1, number_2))
print(number_1 - number_2)
elif operation == '*':
print('{} * {} = '.format(number_1, number_2))
print(number_1 * number_2)
elif operation == '/':
print('{} / {} = '.format(number_1, number_2))
print(number_1 / number_2)
else:
print('You have not typed a valid operator, please run the program again.')
このプログラムを実行するには、最初にユーザーに操作記号を入力するように求めます。 ユーザーが*
を入力して乗算するとします。 次に、プログラムは2つの数値を要求し、ユーザーは58
と40
を入力します。 この時点で、プログラムは実行された方程式と積を表示します。
OutputPlease type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
*
Please enter the first number: 58
Please enter the second number: 40
58 * 40 =
2320
プログラムの構成方法により、ユーザーが最初のプロンプトで操作を求められたときに%
を入力すると、数値を入力するまで再試行するためのフィードバックを受け取りません。 さまざまな状況を処理するために、他の可能なオプションを検討することができます。
この時点で、完全に機能するプログラムができましたが、プログラムを再度実行することなく2番目または3番目の操作を実行することはできないため、プログラムにさらに機能を追加しましょう。
[[step-4 -—- defining-functions]] ==ステップ4—関数の定義
ユーザーが望む回数だけプログラムを実行する機能を処理するために、いくつかの機能を定義します。 まず、既存のコードブロックを関数に入れましょう。 関数にcalculate()
という名前を付け、関数自体の中にインデントのレイヤーを追加します。 プログラムを確実に実行するために、ファイルの最後にある関数も呼び出します。
calculator.py
# Define our function
def calculate():
operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
''')
number_1 = int(input('Please enter the first number: '))
number_2 = int(input('Please enter the second number: '))
if operation == '+':
print('{} + {} = '.format(number_1, number_2))
print(number_1 + number_2)
elif operation == '-':
print('{} - {} = '.format(number_1, number_2))
print(number_1 - number_2)
elif operation == '*':
print('{} * {} = '.format(number_1, number_2))
print(number_1 * number_2)
elif operation == '/':
print('{} / {} = '.format(number_1, number_2))
print(number_1 / number_2)
else:
print('You have not typed a valid operator, please run the program again.')
# Call calculate() outside of the function
calculate()
次に、より多くの条件ステートメントで構成される2番目の関数を作成しましょう。 このコードブロックでは、ユーザーに再計算するかどうかを選択できるようにします。 これは、計算機の条件ステートメントに基づいて行うことができますが、この場合、エラーを処理するためのif
、elif
、およびelse
は1つだけです。
この関数にagain()
という名前を付け、def calculate():
コードブロックの下に追加します。
calculator.py
...
# Define again() function to ask user if they want to use the calculator again
def again():
# Take input from user
calc_again = input('''
Do you want to calculate again?
Please type Y for YES or N for NO.
''')
# If user types Y, run the calculate() function
if calc_again == 'Y':
calculate()
# If user types N, say good-bye to the user and end the program
elif calc_again == 'N':
print('See you later.')
# If user types another key, run the function again
else:
again()
# Call calculate() outside of the function
calculate()
上記のelseステートメントにはエラー処理がいくつかありますが、たとえば、大文字のY
に加えて、小文字のy
とn
を受け入れる方が少し良いでしょう。 )sおよびN
。 これを行うには、string functionstr.upper()
を追加しましょう。
calculator.py
...
def again():
calc_again = input('''
Do you want to calculate again?
Please type Y for YES or N for NO.
''')
# Accept 'y' or 'Y' by adding str.upper()
if calc_again.upper() == 'Y':
calculate()
# Accept 'n' or 'N' by adding str.upper()
elif calc_again.upper() == 'N':
print('See you later.')
else:
again()
...
この時点で、again()
関数をcalculate()
関数の最後に追加して、続行するかどうかをユーザーに尋ねるコードをトリガーできるようにする必要があります。
calculator.py
def calculate():
operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
''')
number_1 = int(input('Please enter the first number: '))
number_2 = int(input('Please enter the second number: '))
if operation == '+':
print('{} + {} = '.format(number_1, number_2))
print(number_1 + number_2)
elif operation == '-':
print('{} - {} = '.format(number_1, number_2))
print(number_1 - number_2)
elif operation == '*':
print('{} * {} = '.format(number_1, number_2))
print(number_1 * number_2)
elif operation == '/':
print('{} / {} = '.format(number_1, number_2))
print(number_1 / number_2)
else:
print('You have not typed a valid operator, please run the program again.')
# Add again() function to calculate() function
again()
def again():
calc_again = input('''
Do you want to calculate again?
Please type Y for YES or N for NO.
''')
if calc_again.upper() == 'Y':
calculate()
elif calc_again.upper() == 'N':
print('See you later.')
else:
again()
calculate()
これで、ターミナルウィンドウでpython calculator.py
を使用してプログラムを実行でき、何度でも計算できるようになります。
[[ステップ-5 ----コードの改善]] ==ステップ5—コードの改善
これで、すてきで完全に機能するプログラムができました。 ただし、このコードを改善するためにできることは他にもたくさんあります。 たとえば、次のように、プログラムのコードの先頭にあるプログラムに人々を歓迎するウェルカム機能を追加できます。
def welcome():
print('''
Welcome to Calculator
''')
...
# Don’t forget to call the function
welcome()
calculate()
プログラム全体でより多くのエラー処理を導入する機会があります。 手始めに、ユーザーが番号を求められたときにplankton
と入力しても、プログラムが引き続き実行されるようにすることができます。 プログラムは現在のところ、number_1
とnumber_2
が整数でない場合、ユーザーはエラーを受け取り、プログラムの実行を停止します。 また、ユーザーが除算演算子(/
)を選択し、2番目の数値(number_2
)に0
を入力した場合、ユーザーはZeroDivisionError: division by zero
エラーを受け取ります。 このために、try ... except
ステートメントで例外処理を使用することをお勧めします。
オペレーターを4人に限定しましたが、次のように追加のオペレーターを追加できます。
...
operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
** for power
% for modulo
''')
...
# Don’t forget to add more conditional statements to solve for power and modulo
さらに、プログラムの一部をループステートメントで書き換えることもできます。
エラーを処理し、すべてのコーディングプロジェクトを変更および改善する方法は多数あります。 提示されている問題を解決するための単一の正しい方法はないことに留意することが重要です。
結論
このチュートリアルでは、コマンドラインで電卓を構築するための1つの可能なアプローチについて説明しました。 このチュートリアルを完了すると、コードを変更および改善し、コマンドラインでのユーザー入力が必要な他のプロジェクトで作業できるようになります。
このシンプルなコマンドライン計算プロジェクトのソリューションをご覧ください。 下のコメント欄に電卓プロジェクトを自由に投稿してください。
次に、三目並べやじゃんけんなどのテキストベースのゲームを作成することができます。