웹사이트 검색

Python 3에서 계산기 프로그램을 만드는 방법


소개

Python 프로그래밍 언어는 숫자로 작업하고 수학적 표현을 평가할 때 사용할 수 있는 훌륭한 도구입니다. 이 품질은 유용한 프로그램을 만드는 데 활용할 수 있습니다.

이 튜토리얼은 Python 3에서 명령줄 계산기 프로그램을 만드는 방법을 설명하는 학습 연습을 제공합니다. 이 계산기는 기본 산술만 수행할 수 있지만 이 가이드의 마지막 단계는 어떻게 개선할 수 있는지에 대한 시작점 역할을 합니다. 더 강력한 계산기를 만드는 코드.

우리는 함수를 사용하고 사용자 입력을 처리하여 계산기를 만들 것입니다.

전제 조건

이 자습서에서는 로컬 컴퓨터에 Python 3가 설치되어 있고 컴퓨터에 프로그래밍 환경이 설정되어 있어야 합니다. Python을 설치하거나 환경을 설정해야 하는 경우 운영 체제에 적합한 가이드를 따르면 됩니다.

1단계 - 사용자 입력 요청

계산기는 사람이 컴퓨터가 풀 수 있는 방정식을 제공할 때 가장 잘 작동합니다. 인간이 컴퓨터가 작업하기를 원하는 숫자를 입력하는 지점에서 프로그램 작성을 시작합니다.

먼저 프로그램용 파일을 만듭니다. 이 예에서는 텍스트 편집기 nano를 사용하고 파일 이름을 calculator.py로 지정합니다.

  1. nano calculator.py

다음으로 이 파일에 내용을 추가하여 프로그램을 실행합니다. 이 프로그램의 경우 사용자가 두 개의 숫자를 입력하도록 하므로 사용자에게 두 개의 숫자를 입력하라는 메시지를 표시하도록 프로그램에 지시합니다. Python의 내장 input() 함수를 사용하여 키보드에서 사용자가 생성한 입력을 수락하여 이 작업을 수행할 수 있습니다. input() 함수의 괄호 안에 문자열을 전달하여 사용자에게 메시지를 표시한 다음 사용자의 입력을 변수에 할당할 수 있습니다. 입력을 요청할 때 사용자의 입력과 프롬프트 문자열 사이에 공백이 있도록 문자열 끝에 공백을 포함하는 것이 도움이 될 수 있습니다.

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

두 줄을 작성한 후 실행하기 전에 프로그램을 저장해야 합니다. nano를 사용하는 경우 CTRL + X를 누른 다음 YENTER를 눌러 종료할 수 있습니다.

다음 명령을 사용하여 프로그램을 실행하십시오.

  1. python calculator.py

그러면 프로그램 프롬프트가 시작되고 터미널 창에서 응답할 수 있습니다.

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

이 프로그램을 몇 번 실행하고 입력을 변경하면 메시지가 표시될 때 단어, 기호, 공백 또는 Enter 키를 포함하여 원하는 모든 것을 입력할 수 있음을 알 수 있습니다. 이는 input()이 데이터를 문자열로 받아들이고 숫자를 찾고 있다는 사실을 모르기 때문입니다.

이 프로그램에서 숫자를 사용하는 이유는 두 가지입니다.

  1. 프로그램이 수학적 계산을 수행할 수 있도록
  2. 사용자의 입력이 숫자 문자열인지 확인

계산기의 필요에 따라 input() 함수에서 들어오는 문자열을 정수 또는 실수로 변환할 수 있습니다. 이 자습서에서는 정수가 우리의 목적에 적합하므로 int() 함수의 input() 함수를 정수 데이터 유형으로 래핑합니다.

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

이제 프로그램을 실행하고 두 개의 정수를 입력하면 오류가 발생하지 않습니다.

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단계 - 연산자 추가

프로그램이 완료되기 전에 총 4개의 수학 연산자를 추가합니다. 더하기는 +, 빼기는 -, 곱하기는 *, 그리고 /는 나눗셈을 위한 것입니다.

프로그램을 구축할 때 각 부분이 올바르게 작동하는지 확인하고 싶을 것이므로 추가 설정부터 시작하십시오. 계산기를 사용하는 사람이 내용을 볼 수 있도록 인쇄 기능 내에 두 개의 숫자를 추가합니다.

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

print(number_1 + number_2)

프로그램을 실행하고 예상대로 작동하는지 확인하라는 메시지가 표시되면 두 개의 숫자를 입력합니다.

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

출력은 프로그램이 올바르게 작동하고 있음을 보여줍니다. 이제 사용자가 프로그램 실행 시간 동안 완전히 알 수 있도록 컨텍스트를 더 추가하십시오. 이렇게 하려면 문자열 포맷터를 사용하여 텍스트를 올바르게 포맷하고 피드백을 제공하십시오. 사용자가 입력하는 숫자와 생성된 결과와 함께 사용되는 연산자에 대한 확인을 받길 원합니다.

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

문자열 포맷터를 사용하면 사용자에게 더 많은 피드백을 제공할 수 있습니다.

이 시점에서 덧셈에 사용된 것과 동일한 형식으로 나머지 연산자를 프로그램에 추가할 수 있습니다.

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)

여기서 나머지 연산자인 -, */를 위의 프로그램에 추가합니다. 이 시점에서 프로그램을 실행하면 프로그램이 위의 모든 작업을 실행합니다. 그러나 한 번에 하나의 작업을 수행하도록 프로그램을 제한하려고 합니다. 이를 위해 조건문을 사용합니다.

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이라는 변수에 전달합니다.

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 문이 있습니다. , else 문은 사용자가 연산자 기호를 입력하지 않은 경우 오류를 처리하기 위해 배치됩니다.

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.')

이 프로그램을 살펴보기 위해 먼저 사용자에게 작업 기호를 입력하라는 메시지가 표시됩니다. 예를 들어 사용자가 곱하기 위해 *를 입력했다고 가정합니다. 다음으로 프로그램은 두 개의 숫자를 요청하고 사용자는 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

프로그램 구조 때문에 사용자가 첫 번째 프롬프트에서 작업을 요청했을 때 %를 입력하면 숫자를 입력할 때까지 다시 시도하라는 피드백을 받지 못합니다. 다양한 상황을 처리하기 위해 다른 가능한 옵션을 고려할 수 있습니다.

이 시점에서 완전한 기능을 갖춘 프로그램이 있지만 프로그램을 다시 실행하지 않고는 두 번째 또는 세 번째 작업을 수행할 수 없습니다. 다음 단계는 이 기능을 프로그램에 추가하기 위해 몇 가지 기능을 정의하는 것입니다.

4단계 - 함수 정의

사용자가 원하는 만큼 프로그램을 수행하는 기능을 처리하기 위해 몇 가지 기능을 정의합니다. 먼저 기존 코드 블록을 함수에 넣습니다. 함수 이름을 calculate()로 지정하고 함수 자체 내에 추가 들여쓰기 레이어를 추가합니다. 프로그램이 실행되도록 하려면 파일 맨 아래에 있는 함수도 호출합니다.

# 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()

다음으로 더 많은 조건문으로 구성된 두 번째 함수를 만듭니다. 이 코드 블록에서 사용자가 다시 계산할지 여부를 선택할 수 있도록 하려고 합니다. 계산기 조건문을 기반으로 할 수 있지만 이 경우에는 하나의 if, 하나의 elif 및 하나의 else 만 있습니다. 오류를 처리합니다.

이 함수의 이름을 again()로 지정하고 def calculate(): 코드 블록 뒤에 추가합니다.

... 
# 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을 더 명확하게 허용할 수 있습니다. -case YN. 그렇게 하려면 문자열 함수 str.upper()를 추가합니다.

...
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()
...

이 시점에서 calculate() 함수 끝에 again() 함수를 추가해야 합니다. 계속하고 싶습니다:

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()

프로그램 전체에 더 많은 오류 처리를 도입할 수 있는 기회가 있습니다. 우선, 사용자가 숫자를 묻는 질문에 플랑크톤을 입력하더라도 프로그램이 계속 실행되도록 할 수 있습니다. 프로그램이 현재 상태이므로 number_1number_2가 정수가 아니면 사용자에게 오류가 발생하고 프로그램 실행이 중지됩니다. 또한 사용자가 나누기 연산자(/)를 선택하고 두 번째 숫자(number_2)에 0을 입력하는 경우 사용자는 ZeroDivisionError: 0으로 나누기 오류가 발생합니다. 이를 위해 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

또한 루프 문을 사용하여 프로그램의 일부를 다시 작성할 수 있습니다.

오류를 처리하고 모든 코딩 프로젝트를 수정하고 개선하는 방법에는 여러 가지가 있습니다. 우리에게 제시된 문제를 해결하기 위한 단 하나의 올바른 방법은 없다는 것을 명심하는 것이 중요합니다.

결론

이 자습서에서는 명령줄에서 계산기를 구축하는 한 가지 가능한 접근 방식을 살펴보았습니다. 이 자습서를 완료한 후에는 코드를 수정 및 개선하고 명령줄에서 사용자 입력이 필요한 다른 프로젝트에서 작업할 수 있습니다.

이 기본 명령줄 계산기 프로젝트에 대한 귀사의 솔루션을 보고 싶습니다! 의견에 계산기 프로젝트를 자유롭게 게시하십시오.

다음으로 tic-tac-toe 또는 가위바위보와 같은 텍스트 기반 게임을 만들 수 있습니다.