開発者ドキュメント

how-to-make-a-simple-calculator-program-in-python-3

前書き

Pythonプログラミング言語は、数値を操作したり数式を評価したりするときに使用する優れたツールです。 この品質は、有用なプログラムを作成するために利用できます。

このチュートリアルでは、Python 3で簡単なコマンドライン計算プログラムを作成するのに役立つ学習演習を紹介します。 このプログラムを作成する方法は1つありますが、コードを改善してより堅牢な計算機を作成する機会はたくさんあります。

https://www.digitalocean.com/community/tutorials/how-to-do-math-in-python-3-with-operators [数学演算子]、https://www.digitalocean.comを使用します。 / community / tutorials / how-to-use-variables-in-python-3 [変数]、https://www.digitalocean.com/community/tutorials/how-to-write-conditional-statements-in-python- 3-2 [条件文]、https://www.digitalocean.com/community/tutorials/how-to-define-functions-in-python-3 [関数]、およびユーザー入力を処理して計算機を作成します。

前提条件

このチュートリアルでは、ローカルコンピューターにPython 3をインストールし、コンピューターにプログラミング環境をセットアップする必要があります。 Pythonをインストールするか環境をセットアップする必要がある場合は、https://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a-local- programming-environment-for-python-3 [オペレーティングシステムに適したガイド]。

ステップ1-ユーザーに入力を促す

計算機は、人間がコンピューターが解く方程式を提供するときに最適に機能します。 人間がコンピューターで操作したい数字を入力した時点で、プログラムの作成を開始します。

これを行うには、キーボードからユーザーが生成した入力を受け入れるPythonの組み込みの `+ input()`関数を使用します。 ` input()+`関数の括弧内にhttps://www.digitalocean.com/community/tutorial_series/working-with-strings-in-python-3[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:
Enter your second number:

このプログラムを数回実行して入力を変えると、プロンプトが表示されたときに、単語、記号、空白、または単にEnterキーなど、必要なものを入力できることに気付くでしょう。 これは、 `+ input()+`がhttps://www.digitalocean.com/community/tutorial_series/working-with-strings-in-python-3[strings]としてデータを受け取り、私たちが存在することを知らないためです。番号を探しています。

このプログラムでは、1)プログラムで数学的計算を実行できるようにするため、および2)ユーザーの入力が数値文字列であることを検証するために、このプログラムで数字を使用します。

計算機のニーズに応じて、 `+ input()`関数から入力される文字列を整数または浮動小数点数に変換したい場合があります。 私たちにとって、整数は目的に合っているので、 ` int()`関数の ` input()+`関数をhttps://www.digitalocean.com/community/tutorials/how-にラップします。 to-convert-data-types-in-python-3 [convert] https://www.digitalocean.com/community/tutorials/understanding-data-types-in-python-3#integers [整数データへの入力タイプ]。

calculator.py

number_1 = input('Enter your first number: ')
number_2 = input('Enter your second number: ')

ここで、2つの整数を入力しても、エラーは発生しません。

OutputEnter your first number:
Enter your second number:

ただし、文字、記号、またはその他の整数以外を入力すると、次のエラーが発生します。

OutputEnter your first number: sammy
Traceback (most recent call last):
 File "testing.py", line 1, in <module>
   number_1 = int(input('Enter your first number: '))
ValueError: invalid literal for int() with base 10: 'sammy'

これまで、整数データ型の形式でユーザー入力を保存するために2つの変数を設定しました。 入力を浮動小数点数に変換することもできます。

ステップ2-演算子の追加

プログラムが完了する前に、合計4つのhttps://www.digitalocean.com/community/tutorials/how-to-do-math-in-python-3-with-operators [数学演算子]を追加します。加算には「+」、減算には「-」、乗算には「+ * 」、除算には「 / +」。

プログラムを構築する際、各部分が正しく機能していることを確認したいので、ここでは追加の設定から始めます。 印刷機能内に2つの数値を追加して、計算機を使用している人が出力を表示できるようにします。

calculator.py

number_1 = int(input('Enter your first number: '))
number_2 = int(input('Enter your second number: '))

プログラムを実行して、プロンプトが表示されたら2つの数字を入力して、期待どおりに機能することを確認します。

OutputEnter your first number:
Enter your second number:

出力は、プログラムが正常に動作していることを示しているので、プログラムのランタイム全体を通じてユーザーに完全に通知されるように、さらにコンテキストを追加しましょう。 これを行うには、https://www.digitalocean.com/community/tutorials/how-to-use-string-formatters-in-python-3 [string formatters]を使用して、テキストを適切にフォーマットし、フィードバックを提供します。 ユーザーは、入力した番号と、生成された結果と一緒に使用されている演算子に関する確認を受信する必要があります。

calculator.py

number_1 = int(input('Enter your first number: '))
number_2 = int(input('Enter your second number: '))


print(number_1 + number_2)

これで、プログラムを実行すると、プログラムで実行されている数式をユーザーが確認できる追加の出力が得られます。

OutputEnter your first number:
Enter your second number:
+  =

文字列フォーマッタを使用すると、より多くのフィードバックがユーザーに提供されます。

この時点で、追加に使用したのと同じ形式で残りの演算子をプログラムに追加できます。

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



# Multiplication



# Division

上記のプログラムに、残りの演算子、「-」、「+ * 」、および「 / +」を追加しました。 この時点でプログラムを実行すると、プログラムは上記のすべての操作を実行します。 ただし、一度に1つの操作のみを実行するようにプログラムを制限します。 これを行うには、条件ステートメントを使用します。

ステップ3-条件ステートメントの追加

`+ calculator.py +`プログラムでは、ユーザーがさまざまな演算子から選択できるようにしたいと考えています。 そのため、まずはプログラムの上部に情報を追加し、選択する項目を選択して、ユーザーが何をすべきかを理解できるようにします。

三重引用符を使用して、いくつかの異なる行に文字列を記述します。

'''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
'''

ユーザーが選択するために各演算子記号を使用しているため、ユーザーが除算を実行したい場合は、「+ / 」と入力します。 ただし、「 1は加算+」、「+ bは減算+」など、必要なシンボルを選択できます。

ユーザーに入力を求めているため、 `+ input()`関数を使用します。 文字列を ` input()`関数の内部に配置し、その入力の値を変数に渡します。変数の名前は ` operation +`です。

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)

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 `ステートメントがあり、 ` else +`ステートメントがあります人が演算子記号を入力しなかった場合、エラーを処理するために配置されます。

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:
Please enter the second number:
*  =

プログラムの構造上、ユーザーが最初のプロンプトで操作を求められたときに「%」を入力した場合、数字を入力するまで再試行のフィードバックを受け取りません。 さまざまな状況を処理するために、他の可能なオプションを検討することができます。

この時点で、完全に機能するプログラムができましたが、プログラムを再度実行することなく2番目または3番目の操作を実行することはできないため、プログラムにさらに機能を追加しましょう。

ステップ4-関数の定義

ユーザーが望む回数だけプログラムを実行する機能を処理するために、いくつかの機能を定義します。 まず、既存のコードブロックを関数に入れましょう。 関数に「+ calculate()+」という名前を付け、関数自体にインデントのレイヤーを追加します。 プログラムを確実に実行するために、ファイルの最後にある関数も呼び出します。

calculator.py

# Define our function

   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

次に、より多くの条件ステートメントで構成される2番目の関数を作成しましょう。 このコードブロックでは、ユーザーに再計算するかどうかを選択できるようにします。 これは電卓の条件ステートメントに基づいて作成できますが、この場合は、エラーを処理するために、1つの + if +、1つの + elif +、および1つの `+ else +`のみがあります。

この関数に「+ again()」という名前を付け、「 def calculate():+」コードブロックの下に追加します。

calculator.py

...
# Define again() function to ask user if they want to use the calculator again


   # Take input from user





   # If user types Y, run the calculate() function



   # If user types N, say good-bye to the user and end the program



   # If user types another key, run the function again



# Call calculate() outside of the function
calculate()

上記のelseステートメントにはいくつかのエラー処理がありますが、おそらく、大文字の「+ Y 」に加えて小文字の「 y 」と「 n 」を受け入れて、 ` N `。 そのためには、https://www.digitalocean.com/community/tutorials/an-introduction-to-string-methods-in-python-3 [string function] ` str.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 == 'Y':
       calculate()

   # Accept 'n' or 'N' by adding str.upper()
   elif calc_again == 'N':
       print('See you later.')

   else:
       again()
...

この時点で、ユーザーに続行するかどうかを尋ねるコードをトリガーできるように、 `+ calculate()`関数の最後に ` again()+`関数を追加する必要があります。

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


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-コードの改善

これで、すてきで完全に機能するプログラムができました。 ただし、このコードを改善するためにできることは他にもたくさんあります。 たとえば、次のように、プログラムのコードの先頭にあるプログラムに人々を歓迎するウェルカム機能を追加できます。

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


''')
...
# Don’t forget to add more conditional statements to solve for power and modulo

さらに、プログラムの一部をループステートメントで書き換えることもできます。

エラーを処理し、すべてのコーディングプロジェクトを変更および改善する方法は多数あります。 提示されている問題を解決するための単一の正しい方法はないことに留意することが重要です。

結論

このチュートリアルでは、コマンドラインで電卓を構築するための1つの可能なアプローチについて説明しました。 このチュートリアルを完了すると、コードを変更および改善し、コマンドラインでのユーザー入力が必要な他のプロジェクトで作業できるようになります。

このシンプルなコマンドライン計算プロジェクトのソリューションをご覧ください。 下のコメント欄に電卓プロジェクトを自由に投稿してください。

次に、三目並べやじゃんけんなどのテキストベースのゲームを作成することができます。

モバイルバージョンを終了