開発者ドキュメント

Python3で電卓プログラムを作成する方法

序章

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

このチュートリアルでは、Python3でコマンドライン計算プログラムを作成する方法の概要を説明する学習演習を紹介します。 この計算機は基本的な計算しか実行できませんが、このガイドの最後のステップは、コードを改善してより堅牢な計算機を作成する方法の開始点として機能します。

数学演算子変数条件文関数を使用し、ユーザー入力を処理して電卓を作成します。

前提条件

このチュートリアルでは、Python 3をローカルコンピューターにインストールし、プログラミング環境をマシンにセットアップする必要があります。 Pythonをインストールしたり、環境をセットアップしたりする必要がある場合は、オペレーティングシステムに適したガイドに従ってください。

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

電卓は、人間がコンピューターに解く方程式を提供するときに最もよく機能します。 人間がコンピューターで使用したい番号を入力した時点から、プログラムの作成を開始します。

まず、プログラム用のファイルを作成します。 この例では、テキストエディタを使用します nano ファイルに名前を付けます calculator.py:

  1. nano calculator.py

次に、このファイルにコンテンツを追加してプログラムを実行します。 このプログラムでは、ユーザーに2つの数字を入力させるので、ユーザーに2つの数字の入力を求めるようにプログラムに指示します。 Pythonの組み込みを使用してこれを行うことができます input() キーボードからのユーザー生成入力を受け入れる機能。 の括弧内 input() 関数を使用すると、 string を渡してユーザーにプロンプトを表示し、ユーザーの入力を変数に割り当てることができます。 入力を要求するときは、文字列の最後にスペースを含めて、ユーザーの入力とプロンプト文字列の間にスペースを空けると便利な場合があることに注意してください。

電卓.py
number_1 = input('Enter your first number: ')
number_2 = input('Enter your second number: ')

2行を書き込んだ後、実行する前にプログラムを保存する必要があります。 使用している場合 nano、を押して終了できます CTRL + X それから YENTER.

次のコマンドを使用してプログラムを実行します。

  1. python calculator.py

これにより、プログラムのプロンプトが開始され、ターミナルウィンドウで応答できます。

Output
Enter your first number: 5 Enter your second number: 7

このプログラムを数回実行して入力を変えると、プロンプトが表示されたら、単語、記号、空白、Enterキーなど、好きなものを入力できることに気付くでしょう。 それの訳は input() データを文字列として取り込み、数値を探していることを認識しません。

このプログラムでは、次の2つの理由で数字を使用する必要があります。

  1. プログラムが数学計算を実行できるようにする
  2. ユーザーの入力が数値文字列であることを検証します

電卓のニーズに応じて、から入ってくる文字列を変換したい場合があります input() 整数または浮動小数点数のいずれかに機能します。 このチュートリアルでは、整数が目的に合っているので、 input() の機能 int() 入力を整数データ型変換する関数:

電卓.py
number_1 = int(input('Enter your first number: '))
number_2 = int(input('Enter your second number: '))

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

Output
Enter your first number: 23 Enter your second number: 674

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

Output
Enter 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つの変数を設定しました。 入力をfloatに変換して実験することもできます。

ステップ2—演算子を追加する

プログラムが完了する前に、合計4つの数学演算子を追加します。 + さらに、 - 減算の場合、 * 乗算の場合、および / 除算用。

プログラムを作成するときは、各部分が正しく機能していることを確認する必要があるため、追加の設定から始めます。 電卓を使用している人が内容を確認できるように、印刷関数内に2つの数値を追加します。

電卓.py
number_1 = int(input('Enter your first number: '))
number_2 = int(input('Enter your second number: '))

print(number_1 + number_2)

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

Output
Enter your first number: 8 Enter your second number: 3 11

出力は、プログラムが正しく機能していることを示しています。 ここで、プログラムの実行時にユーザーに完全に通知するためのコンテキストを追加します。 これを行うには、文字列フォーマッターを使用して、テキストを適切にフォーマットし、フィードバックを提供します。 入力している数値と、生成された結果と一緒に使用されている演算子についての確認をユーザーが受け取るようにします。

電卓.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)

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

Output
Enter your first number: 90 Enter your second number: 717 90 + 717 = 807

文字列フォーマッタを使用すると、ユーザーはより多くのフィードバックを得ることができます。

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

電卓.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つの操作を実行するようにプログラムを制限する必要があります。 これを行うには、条件付きステートメントを使用します。

ステップ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:

電卓.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つあります-ifまたは elif 他の各演算子のステートメント、および else ユーザーが演算子記号を入力しなかった場合、エラーを処理するためのステートメントが配置されます。

電卓.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つの数値を要求し、ユーザーは入力します 5840. この時点で、プログラムは実行された方程式と積を表示します。

Output
Please 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番目の操作を実行することはできません。 次のステップでは、この機能をプログラムに追加するためのいくつかの機能を定義します。

ステップ4—関数を定義する

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

電卓.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番目の関数を作成します。 このコードブロックでは、ユーザーが再度計算するかどうかを選択できるようにします。 これは、電卓の条件ステートメントに基づいて作成できますが、この場合、1つしかありません。 if、 1 elif、および1つ else エラーを処理します。

この関数に名前を付けます again()、の後に追加します def calculate(): コードブロック:

電卓.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ステートメントにはエラー処理がいくつかありますが、たとえば小文字を受け入れることをより明確にすることができます。 yn 大文字に加えて YN. これを行うには、文字列関数を追加します str.upper():

電卓.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() 続行するかどうかをユーザーに尋ねるコードをトリガーするように機能します。

電卓.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—コードの改善

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

def welcome():
    print('''
Welcome to Calculator
''')
...
# Don’t forget to call the function
welcome()
calculate()

プログラム全体でより多くのエラー処理を導入する機会があります。 手始めに、ユーザーが入力した場合でもプログラムが引き続き実行されるようにすることができます plankton 番号を尋ねられたとき。 プログラムは今なので、 number_1number_2 が整数でない場合、ユーザーはエラーを受け取り、プログラムの実行を停止します。 また、ユーザーが除算演算子を選択した場合(/)と入力 0 彼らの2番目の数のために(number_2)、ユーザーは 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つの可能なアプローチについて説明しました。 このチュートリアルを完了すると、コードを変更および改善し、コマンドラインでのユーザー入力を必要とする他のプロジェクトで作業できるようになります。

この基本的なコマンドライン計算機プロジェクトのソリューションに興味があります。 コメント欄に電卓プロジェクトを投稿してください。

次に、三目並べやじゃんけんのようなテキストベースのゲームを作成することをお勧めします。

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