برنامه ماشین حساب ساده در پایتون - چگونه در پایتون برنامه بنویسیم؟ قسمت چهارم

‏  11 دقیقه
۰۸ اردیبهشت ۱۳۹۹
برنامه ماشین حساب ساده در پایتون - چگونه در پایتون برنامه بنویسیم؟ قسمت چهارم

با یکی دیگر از مجموعه مقالات چگونه با پایتون برنامه بنویسیم، با شما برنامه ماشین حساب ساده در پایتون، را خواهیم نوشت. زبان برنامه ‌نویسی پایتون، ابزاری عالی برای کار با اعداد و محاسبات ریاضی است که از آن می‌توان در نوشتن برنامه‌های کاربردی مفید استفاده کرد.

می‌توان از روش‌های مختلفی برای نوشتن یک برنامه ماشین حساب ساده در پایتون استفاده کرد که ما یکی از آن راه‌ها را انتخاب کرده‌ایم. کدی که خواهیم نوشت، جای زیادی برای بهبود و ایجاد یک ماشین حساب پیشرفته‌تر دارد.

اگر از علاقمندان برنامه نویسی پایتون هستید، در ادامه با ما همراه باشید.

فهرست محتوای این مقاله

برنامه ماشین حساب ساده در پایتون

در این قسمت قصد داریم نحوه‌ی کدنویسی برنامه ماشین حساب ساده در پایتون را برای شما توضیح دهیم. برای نوشتن یک ماشین حساب ساده، به الگوریتم خاصی نیاز نداریم، با کمی حوصله و خلاقیت قادر خواهیم بود، برنامه‌ی موردنظر خود را کدنویسی کنیم.

بیایید از ساده‌ترین شکل ممکن برای نوشتن این ماشین حساب خط فرمان شروع کنیم و مرحله به مرحله به امکانات آن اضافه کنیم.

مرحله‌ی اول برنامه ماشین حساب ساده در پایتون: دریافت ورودی کاربر

ابتدا با استفاده از دستور input() و نوشتن پیغامی مناسب برای کاربر، دو عدد صحیح مدنظر او را دریافت می‌کنیم. به این صورت:

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

خروجی:

Enter your the first number: 54

Enter your the second number: 23

اگر با دستور input() و تبدیل آن به عدد صحیح آشنایی ندارید، می‌توانید مقاله ورودی و خروجی در پایتون را مطالعه کنید.

مرحله‌ی دوم برنامه ماشین حساب ساده در پایتون: اضافه کردن عملگر

پس از آن‌که دو عدد صحیح از کاربر گرفتیم، برای محاسبه و عملیات ریاضی باید مشخص کنیم کاربر می‌خواهد چه عملیاتی روی اعداد انجام دهد. به همین جهت بار دیگر با دستور input() عملگر مورد نظر را دریافت می‌کنیم. برای آن‌که هر کس ورودی متفاوتی وارد نکند با نوشتن راهنما، یک استاندارد برای ورود عملگر تعیین می‌کنیم. به این صورت:

operation = input('''
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.

در ضمن ما، در مثال بالا برای نوشته شدن هر رشته در خط جدید، از سه کوتیشن (‘’’) استفاده کردیم. برای این کار راه‌های دیگری نیز وجود دارد از جمله می‌توان هر خط رشته را در یک پرینت جداگانه نوشت، یا کاراکتر (\) را در انتهای هر خط اضافه کرد.

خروجی:

Please type in the math operation you would like to complete:

+ for addition

- for subtraction

* for multiplication

/ for division

*

مرحله‌ی سوم برنامه ماشین حساب ساده در پایتون: اضافه کردن عبارات شرطی

اکنون که اعداد و عملگر مورد نظر کاربر را گرفتیم، باید با توجه به عملگر ورودی و با استفاده از if و elif و else عملیات ریاضی خواسته شده کاربر را روی اعداد انجام دهیم. به این صورت:

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

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

if operation == '+':
    output_number = number_1 + number_2
    print( "{} + {} = {}" .format(number_1, number_2, output_number))
elif operation == '-':
    output_number = number_1 - number_2
    print( "{} - {} = {}" .format(number_1, number_2, output_number))
elif operation == '*':
    output_number = number_1 * number_2
    print( "{} * {} = {}" .format(number_1, number_2, output_number))
elif operation == '/':
    output_number = number_1 / number_2
    print( "{} / {} = {}" .format(number_1, number_2, output_number))
else:
    print('You have not typed a valid operator, please run the program again.')

برای کسب اطلاعات بیشتر درمورد تابع format() مقاله‌ی قالب‌بندی خروجی در پایتون را مطالعه کنید.

اگر در اینجا کاربر عدد اول خود را 65 و عدد دوم را 24 وارد کند و در ادامه عملگر ضرب (*) را انتخاب کند، خروجی به شکل زیر است.

Enter your the first number: 65

Enter your the second number: 24

Please type in the math operation you would like to complete:

+ for addition

- for subtraction

* for multiplication

/ for division

*

65 * 24 = 1560

خب همان‌طور که می‌بینید، ما به سادگی ماشین حساب خط فرمان خود را نوشتیم. در مراحل بعدی کد خود را کامل‌تر و ماشین حساب را کاراتر خواهیم کرد.

مرحله‌ی چهارم برنامه ماشین حساب ساده در پایتون: ‌تعریف توابع

ما قصد داریم، کاری کنیم که وقتی برنامه اجرا شد، پس از یافتن جواب، خاتمه نیابد و همچنان تا وقتی که ما دستور خاتمه دادن به آن  ندادیم، انجام عملیات ریاضی ادامه پیدا کند. برای چنین کاری لازم است از توابع استفاده کنیم.

ابتدا کدی که در بالا نوشتیم را در یک تابع به نام calculate() قرار می‌دهیم و سپس برنامه را با فراخوانی تابع اجرا می‌کنیم. به این صورت:

def calculate():
    number_1 = int(input("Enter your the first number: "))
    number_2 = int(input("Enter your the second number: "))

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

    if operation == '+':
        output_number = number_1 + number_2
        print( "{} + {} = {}" .format(number_1, number_2, output_number))
    elif operation == '-':
        output_number = number_1 - number_2
        print( "{} - {} = {}" .format(number_1, number_2, output_number))
    elif operation == '*':
        output_number = number_1 * number_2
        print( "{} * {} = {}" .format(number_1, number_2, output_number))
    elif operation == '/':
        output_number = number_1 / number_2
        print( "{} / {} = {}" .format(number_1, number_2, output_number))
    else:
        print('You have not typed a valid operator, please run the program again.')

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

در ادامه، یک تابع دیگر اضافه می‌کنیم که در آن از کاربر درمورد ادامه داشتن برنامه یا خاتمه دادن به آن سوال می‌کند. این تابع را در پایان تابع اول و قبل از فراخوانی calculate() اضافه می‌کنیم.

در این تابع ابتدا از کاربر با دریافت Yes و No می‌پرسیم که به اجرا ادامه دهیم یا خیر. در ادامه با توجه به پاسخ کاربر، با استفاده از if و elif و else برنامه را ادامه، متوقف یا تکرار می‌کنیم.

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

در اینجا اگر کاربر، Y و N را با حروف کوچک وارد کند برنامه دچار خطا می‌شود و وارد قسمت مورد نظر نمی‌شود. به همین جهت ابتدا با استفاده از ویژگی 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()

...

در قدم آخر، باید تابع agian() را در انتهای کدهای داخل تابع calculate() قرار دهیم تا بتوانیم بعد از پایان هر اجرا، از کاربر سوال کنیم به برنامه ادامه می‌دهد یا خیر. به این صورت:

def calculate():
    number_1 = int(input("Enter your the first number: "))
    number_2 = int(input("Enter your the second number: "))

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

    if operation == '+':
        output_number = number_1 + number_2
        print( "{} + {} = {}" .format(number_1, number_2, output_number))
    elif operation == '-':
        output_number = number_1 - number_2
        print( "{} - {} = {}" .format(number_1, number_2, output_number))
    elif operation == '*':
        output_number = number_1 * number_2
        print( "{} * {} = {}" .format(number_1, number_2, output_number))
    elif operation == '/':
        output_number = number_1 / number_2
        print( "{} / {} = {}" .format(number_1, number_2, output_number))
    else:
        print('You have not typed a valid operator, please run the program again.')

    again()

# 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.upper() == 'Y':
        calculate()
    # If user types N, say good-bye to the user and end the program
    elif calc_again.upper() == 'N':
        print('See you later.')
    # If user types another key, run the function again
    else:
        again()

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

مرحله‌ی پنجم برنامه ماشین حساب ساده در پایتون: بهبود کد

اکنون یک برنامه‌ی خوب و کاربردی داریم، با این حال، موارد بسیاری وجود دارد که می‌توان برای بهبود کد انجام داد. برای مثال می‌توان یک خوش‌آمدگویی در ابتدای کد قرار داد. به این صورت:

def welcome():
    print('''
    Welcome to Calculator
    ''')

...

# فراموش نکنید که این تابع را فراخوانی کنید
welcome()
calculate()

به طور قطع، این کد به خطاهای بسیاری در موقع اجرا برمی‌خورد، از جمله خطای تقسیم یک عدد بر صفر یا خطای وارد کردن یک عدد اعشاری یا یک رشته در ورودی که این موارد منجر به دریافت خطا و متوقف شدن برنامه می‌شود. برای رفع این‌گونه خطاها می‌توان از مدیریت استثنا (try …… except) استفاده کرد. شما می‌توانید این موارد را برای بهبود بخشیدن به کد، اضافه کنید.

ما این برنامه را با چهار عملگر نوشتیم، اما شما می‌توانید موارد دیگری را نیز اضافه کنید. به عنوان مثال:

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

...
#  فراموش نکنید برای حل توان و باقیمانده تقسیم، باید عبارات شرطی دیگری بنویسید.

روش‌های بسیاری برای رفع خطاها و اصلاح و بهبود هر پروژه کد‌نویسی وجود دارد. در نتیجه نباید منتظر باشید که فقط از یک راه‌ حل صحیح واحد، مشکل به وجود آمده را حل کرد.

جمع بندی:

با هم یک پروژه کوچک برنامه نویسی با پایتون را مرحله به مرحله کدنویسی کردیم و دیدیم چگونه یک برنامه‌ می‌تواند شاخ و برگ بگیرد و رشد کند. هیچ برنامه نویسی قادر نخواهد بود، برنامه را از همان ابتدا به صورت پیچیده بنویسد، بلکه او برنامه را از ساده‌ترین حالت ممکن شروع کرده و به مرور آن را ارتقا داده و پیشرفته‌تر می‌کند.

برنامه‌ی ماشین حسابی که نوشتیم، این امکان را دارد تبدیل به یک ماشین حساب قوی‌تر شود و عملیات‌های پیچیده‌تری را محاسبه کند. به شما پیشنهاد می‌کنیم، برای این منظور خودتان این کار را انجام داده و به تجربه برنامه ‌نویسی خود با پایتون، بیافزایید.

اگر به یادگیری بیشتر در زمینه‌ی برنامه نویسی پایتون علاقه داری، یادگیری زبان پایتون بسیار ساده است. و با شرکت در دوره‌ی متخصص پایتون توسعه وب در آینده می‌تونی اپلیکیشن موبایل و دسکتاپ بسازی و وارد حوزه‌ی هوش مصنوعی هم بشوی.

چه امتیازی به این مقاله می دید؟
نویسنده عبدالرضا مولایی
هیچوقت برای یادگیری دیر نیست؛ همیشه چیزهای جدید برای آموختن وجود دارد.. این دو جمله، همیشه آویزه‌ی گوش منه، چون باعث میشه از یادگیری چیزهای تازه هراسی نداشته باشم.
ارسال دیدگاه
خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :

 

نظرات کاربران

امین

سلام. کاملاً جامع و مفید.
ممنون

mehdi

خیلی خوب و جامع توضیح دادید جایی هیچ سوالی باقی نموند خیلی خیلی ممنون

محمد مبین ملاجعفر

سلام خسته نباشید یه سوال ما باید چی بزنیم که >>> این علامت بیاد هر کاری کردم نتونستم.بعد یه سوال دیگه اگه یه حرکت اشتباه کنیم باید از اول شروع به نوشتن کنیم؟

عبدالرضا مولایی

سلام. محمد مبین عزیز،
شما اگر دوست دارید سه علامت فلش، قبل از عدد ورودی کاربر وجود داشته باشه، باید در مرحله اول کد، جایی که عدد را از کاربر میگیریم، در رشته ورودی تابع input این ‘<<<' را وارد کنید.. در مورد سوال دوم، اگر منظورت اشتباه در کد نویسی است، شما این برنامه را در یک ویرایشگر کد، نظیر IDLE خود پایتون کد نویسی و ذخیره می‌کنید و در صورت اشتباه، فقط اون را اصلاح می‌کنید.

nasiri

سلام خسته نباشید…

منظورم از خروجی گرفتن به صورت گرافیکی اینه که یه برنامه exe مثل ماشین حساب های معمول طراحی کنید نه صرف اجرای کد در ترمینال.

🙂

نازنین کریمی مقدم

درود. آموزش گرافیک در پایتون (روی همین بحث ماشین حساب) رو در مقالات بعدی حتما پوشش خواهیم داد.
اما اگر نیاز فوری به یادگیری و کدنویسیش دارید، میتونید از tkinter مشابه با این راهنما استفاده کنید. منطق عملیات مثل مقاله هست فقط یسری کد برای ساخت المانهای گرافیکی اضافه میشه که مفصل درون لینک توضیح داده.

مینا

ممنون از اموزش خوبتون حال اگر بخوایم ماشین حساب رو به صورت پیشرفته جلوببریم یعنی مثلا عبارات )2*3(-)1+3(-2 رو محاسبه کنه چیکار باید کنیم

نازنین کریمی مقدم

درود.
جواب سوالتون یکم توضیح دادنش سخته. شما باید روی شرط پرانتزتون یه بولین فعال کنید تا هر مقداری که از اون به بعد کاربر وارد کرده رو به صورت جدا در یک متغیر دیگه محاسبه کنه و بعد که پرانتز بسته رو دید، متغیر رو غیر فعال کنه و مقدار پرانتز رو در معادله اصلی قرار بده.
حالا اینجا بحث پیش میاد که اگه دو تا پرانتز تو در تو داشته باشیم چطوری میشه؟ برای پرانتز تو در تو بهتر هست که از یه آرایه یا لیست استفاده کنید به صورتی که هر خونه از آرایه میتونه خودش یه آرایه باشه.
سعی میکنیم یه مقاله آموزشی از ماشین حساب پیشرفته رو در لیست مقالات آینده قرار بدیم. تا با دیدن کدش روند رو بهتر متوجه بشید.

nasiri

سلام

میتونید کد های ماشین حساب به صورت گرافیکی هم آپلود کنید؟

نازنین کریمی مقدم

سلام.
منظورتون از به صورت گرافیکی چی هست؟

A. A. Y

ممنون خیلی خوب و آموزنده

ما در سون لرن با محدودسازی دسترسی آزاد به اینترنت مخالفیم     اطلاعات بیشتر