노마드코더 AI 기초 탄탄 클럽 #15 계산기 C++ vs Python
이 글은 노마드코더 - AI 기초 탄탄 클럽 시리즈의 9번째 기록입니다. (총 13개)
미션은 Python이었지만 같은 기능을 최근에 배운 언어인 C++로도 작성해서 비교해봤다.
def add(x, y):
return x + y
def subtract(x, y):
return x - y
def multiply(x, y):
return x * y
def divide(x, y):
if y == 0
return "오류: 0으로 나눌 수 없습니다."
return x / y
print("\n==== 파이썬 계산기 ====\n")
while True:
try:
num1 = float(input("첫 번째 숫자를 입력하세요: "))
num2 = float(input("두 번째 숫자를 입력하세요: "))
except ValueError:
print("오류: 숫자를 정확히 입력해주세요.")
continue
print("\n===========================")
print("+: 더하기, -: 빼기, *: 곱하기, /: 나누기, q: 종료")
print("===========================")
choice = input("\n원하는 연산자를 입력하세요 (종료하려면 q): ")
if choice.lower() == 'q':
print("계산기를 종료합니다.")
break
if choice in ('+', '-', '*', '/'):
if choice == '+':
print(f"결과: {num1} + {num2} = {add(num1, num2)}")
elif choice == '-':
print(f"결과: {num1} - {num2} = {subtract(num1, num2)}")
elif choice == '*':
print(f"결과: {num1} * {num2} = {multiply(num1, num2)}")
elif choice == '/':
print(f"결과: {num1} / {num2} = {divide(num1, num2)}")
else:
print("잘못된 입력입니다. 정확한 연산자를 입력하거나 q를 입력해주세요.")
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
float add(float x, float y);
float subtract(float x, float y);
float multiply(float x, float y);
float divide(float x, float y);
int main() {
cout << "==== C++ 계산기 ====" << endl;
while (true) {
float num1 = 0.0f;
float num2 = 0.0f;
cout << "첫 번째 숫자를 입력하세요: ";
if (!(cin >> num1)) {
cout << "오류: 숫자를 정확히 입력해주세요." << endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
continue;
}
cout << "두 번째 숫자를 입력하세요: ";
if (!(cin >> num2)) {
cout << "오류: 숫자를 정확히 입력해주세요." << endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
continue;
}
cout << endl;
cout << "===========================" << endl;
cout << "+: 더하기, -: 빼기, *: 곱하기, /: 나누기, q: 종료" << endl;
cout << "===========================" << endl;
string choice = "";
cout << "원하는 연산자를 입력하세요 (종료하려면 q): ";
cin >> choice;
for (char& c : choice) c = tolower(c);
cout << endl;
if (choice == "q") {
break;
}
else if (choice == "+") {
cout << "결과: " << num1 << " + " << num2 << " = " << add(num1, num2) << endl;
}
else if (choice == "-") {
cout << "결과: " << num1 << " - " << num2 << " = " << subtract(num1, num2) << endl;
}
else if (choice == "*") {
cout << "결과: " << num1 << " * " << num2 << " = " << multiply(num1, num2) << endl;
}
else if (choice == "/") {
if (num2 != 0) {
cout << "결과: " << num1 << " / " << num2 << " = " << divide(num1, num2) << endl;
}
else {
cout << "오류: 0으로 나눌 수 없습니다." << endl;
continue;
}
}
else {
cout << "잘못된 입력입니다. 정확한 연산자를 입력하거나 q를 입력해주세요." << endl;
continue;
}
}
}
float add(float x, float y) {
return x + y;
}
float subtract(float x, float y) {
return x - y;
}
float multiply(float x, float y) {
return x * y;
}
float divide(float x, float y) {
return x / y;
}
두 언어의 차이점
- Python의
float는 64비트, C++의float는 32비트. 따라서 C++에서 같은 정밀도를 원하면double을 사용해야 한다 - C++의 cin은 파싱에 실패하면 에러상태가 유지되고 입력 버퍼에 잘못된 값이 그대로 남아서 복구가 필수이다. 에러 상태 초기화(
cin.clear()) 및 버퍼 비우기(cin.ignore(numeric_limits <streamsize>::max(), '\n' );) - Python의
.lower()는 문자열 전체에 바로 사용 가능하지만 C++의tolower()는 char 하나씩 처리하기 때문에 문자열 전체에 적용하려면 루프를 돌려서 한 글자씩 변환해야 한다. - Python은 함수를 호출 전에만 실행하면 되지만 C++는 함수를
main()아래에 두려면 전방 선언을 해야한다. - Python은 인터프리터 언어라 VSCode에 Python 확장만 설치하면 바로 실행 가능하지만 C++는 컴파일 언어라 빌드 설정을 잡아줘야 실행이 가능하기 때문에 VSCode에서 바로 실행되지 않는다. VisualStudio에서 실행하거나 VSCode에 MinGW(g++)를 설치하거나 해야한다.
- 함수 선언 방식
- C++: 함수를 통해 return되는 내용의 자료형을 정하고 함수 생성. 매개변수의 자료형도 미리 선언해둬야 함.
float add(float x, float y); - Python:
def(define)를 사용해 함수를 정의함.def add(x, y)
- C++: 함수를 통해 return되는 내용의 자료형을 정하고 함수 생성. 매개변수의 자료형도 미리 선언해둬야 함.
- 글자 출력 방식
- C++:
std::cout을 사용함. 줄 바꿈은std::endl. 변수를 사용할 경우<<로 문자열과 나눠서 사용.cout << "결과: " << num1 << " + " << num2 << " = " << add(num1, num2) << endl; - Python:
print(f"내용"). 줄 바꿈은 print 끝에서는 자동. 중간에는\n사용. 변수를 사용할 경우{변수명}사용.print(f"결과: {num1} + {num2} = {add(num1, num2)}")
- C++:
- 조건문 작성 방식
- C++:
if(조건){},else if - Python:
if 조건:,elif
- C++:
Series: 노마드코더 - AI 기초 탄탄 클럽
1 | 노마드코더 AI 기초 탄탄 클럽 #3 Position & Pseudo Selector 2 | 노마드코더 AI 기초 탄탄 클럽 #4 Playlist Layout 3 | 노마드코더 AI 기초 탄탄 클럽 #5 Books Layout 4 | 노마드코더 AI 기초 탄탄 클럽 #6 Music Player 5 | 노마드코더 AI 기초 탄탄 클럽 #8 Events&Objects 6 | 노마드코더 AI 기초 탄탄 클럽 #10 JS Casino 7 | 노마드코더 AI 기초 탄탄 클럽 #11 Christmas Clock 8 | 노마드코더 AI 기초 탄탄 클럽 #12 Random Gradient 9 | 노마드코더 AI 기초 탄탄 클럽 #15 계산기 C++ vs Python 읽는 중 10 | 노마드코더 AI 기초 탄탄 클럽 #16 For Loop with Python 11 | 노마드코더 AI 기초 탄탄 클럽 #18 React Calculator 12 | 노마드코더 AI 기초 탄탄 클럽 #19 Pokemon Gallery 13 | 노마드코더 AI 기초 탄탄 클럽 #22 Marvel Character Gallery