مینی پروژه های پایتونی ، ساخت ماشین حساب ساده کنسولی

مینی پروژه های پایتونی ، ساخت ماشین حساب ساده کنسولی

معرفی 

زبان برنامه نویسی پایتون یک ابزار عالی برای استفاده در هنگام کار با اعداد و ارزیابی عبارات ریاضی است. از این رو می توان برای ساخت هر نوع برنامه ای ، پایتون را مورد استفاده قرار داد.

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

پیش نیاز ها

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

مرحله اول - از‌ کاربر ورودی ها را دریافت کنید

ابتدا یک فایل برای برنامه خود ایجاد می کنیم برای این مثال، من از ویرایشگر متن vs code و نام فایل calculator.py استفاده می کنم.

در مرحله بعد ، در برنامه، کاربر باید دو عدد را وارد کند، بنابراین به برنامه دستور میدهیم تا دو عدد را از کاربر بخواهد. ما می توانید این کار را با استفاده از تابع input() داخلی پایتون برای پذیرش ورودی های تولید شده توسط کاربر از صفحه کلید انجام دهیم. در داخل پرانتز تابع input() می توانیم رشته ای را برای نمایش و درخواست از کاربر بنویسیم و سپس ورودی کاربر را به یک متغیر اختصاص دهیم. به خاطر داشته باشید که هنگام درخواست ورودی، گنجاندن یک فاصله در انتهای رشته خود می تواند مفید باشد تا بین ورودی کاربر و رشته درخواست فاصله وجود داشته باشد:

number_1 = input('Enter a num1 : ')
number_2 = input('Enter a num2 : ')

برنامه باید همچین خروجی داشته باشد 

Output
Enter a num1 : 5 
Enter a num2 : 7

اگر این برنامه را چند بار اجرا کنید و ورودی خود را تغییر دهید، متوجه خواهید شد که در صورت درخواست می توانید هر چیزی را که می خواهید وارد کنید، از جمله کلمات، نمادها، فضای خالی یا کلید enter. دلیلش این است که input() داده ها را به صورت رشته می گیرد و نمی داند که شما به دنبال اعداد هستید. ما باید همچین رفتاری را کنترل کنیم .

ما باید ورودی های دریافت شده از کاربر را به نوع داده عددی تبدیل کنیم. برای این کار ، تابع input() را در تابع int() قرار می دهیم تا ورودی ها را به نوع داده عددی صحیح تبدیل کند:

number_1 = int(input('Enter a num1 : '))
number_2 = int(input('Enter a num2 : '))

حال، اگر برنامه را اجرا کنیم و دو عدد صحیح وارد کنیم، دیگر با خطا مواجه نخواهیم شد.

نکته ! : اما اگر حروف، نمادها یا هر عدد غیر صحیح دیگری را وارد کنیم با خطا مواجه خواهید شد.

مرحله دوم - از کاربر اپراتور را دریافت کنید

هدف برنامه calculator.py این است که کاربر بتواند از بین اپراتورهای مختلف یکی را انتخاب کند.  با افزودن برخی اطلاعات در بالای برنامه، همراه با انتخابی که باید انجام دهید، شروع کنید تا فرد بداند چه کاری انجام دهد.

با استفاده از نقل قول های سه گانه، یک رشته را در چند خط مختلف مینویسیم و اپراتور را از کاربر دریافت میکنیم :

operation = input('''
Enter a operator :
+ for addition
- for subtraction
* for multiplication
/ for division
''')

مرحله سوم - نوشتن شرط‌های برنامه

if operation == '+':
   number = number_1 + number_2
   print(f"{number_1} + {number_2} = {number}")
elif operation == '-':
   number = number_1 - number_2
   print(f"{number_1} - {number_2} = {number}")
elif operation == '*':
   number = number_1 * number_2
   print(f"{number_1} * {number_2} = {number}
elif operation == '/':
   number = number_1 / number_2
   print(f"{number_1} / {number_2} = {number}
eLse:
    print("invalid choose...!")
      

در این کد ما با دستورات شرطی حالت های مختلف را بررسی و کنترل کردیم ، در خط اول نوشتیم که اگر ورودی اپراتور برابر "+" بود، دو عدد دریافت شده را باهم جمع کند. و بعد آن نتیجه را با روش f-string عبارت را فرمت دهی کردیم، برای سه حالت "-"،"*"،"/" هم همین عمل را تکرار کردیم با این تفاوت که در هر کدام شرایط خاص خودش را نوشتیم ، در آخر هم در دستور else گفتیم که اگر هیچ کدام یک از این چهار حالت نبود پیغام انتخاب نامعتبر است را چاپ کند

مرحله چهارم - تعریف توابع 

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

def calculator():
    number_1 = int(input('Enter a num1  :'))
    number_2 = int(input('Enter a num2 : '))
    operation = input('''
Enter a operator :
+ for addition
- for subtraction
* for multiplication
/ for division
''')
if operation == '+':
   number = number_1 + number_2
   print(f"{number_1} + {number_2} = {number}")
elif operation == '-':
   number = number_1 - number_2
   print(f"{number_1} - {number_2} = {number}")
elif operation == '*':
   number = number_1 * number_2
   print(f"{number_1} * {number_2} = {number}
elif operation == '/':
   number = number_1 / number_2
   print(f"{number_1} / {number_2} = {number}
eLse:
    print("invalid choose...!")
calculator()

در کد بالا کل برنامه رو ما در تابع تعریف کردیم .

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

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

def playAgain():
    Plya = input("play again?")
    if plya.lower() == 'y':
        calculator()
        playAgain()
    elif plya.lower() == 'n':
        print("Exit...")
    else:
       playAgain()

در کد بالا تابع مورد نظر را ایجاد میکنیم، بعد با یک ورودی چک میکنیم که آیا برنامه باید اجرا شود یا تمام. اگر در برنامه کاربر از حرف بزرگتر کلمه استفاده کرد ما آن را با متد lower() رشته به حرف کوچک تبدیل میکنیم تا خطایی رخ ندهد. اگر کاربر y را وارد کند تابع مورد نظر صدا زده میشود و برنامه اجرا می‌شود، بعد از اتمام تابع دوباره تابع playAgain() اجرا میشود تا چک کند که آیا برنامه باید اجرا شود یا خیر، اگر کاربر n وارد کند برنامه با یک پیغام تمام میشود و دیگر تابعی اجزا نمیشود و اگر ورودی نامعتبری دریافت کند با یک پیغام هشدار دوباره تابع playAgain() صدا میزند 

پس برنامه ما به این شکل خواهد بود :

def calculate():
    number_1 = int(input("Enter a num1 : "))
    number_2 = int(input("Enter a num2 : "))
    operation = input('''
Enter a operator : 
+ for addition
- for subtraction
* for multiplication
/ for division
    ''')
    if operation == '+':
        number = number_1 + number_2
        print(f"{number_1} + {number_2} = {number}")
    elif operation == '-':
        number = number_1 - number_2
        print(f"{number_1} - {number_2} = {number}" )
    elif operation == '*':
        number = number_1 * number_2
        print(f"{number_1} * {number_2} = {number}")
    elif operation == '/':
        number = number_1 / number_2
        print(f"{number_1} / {number_2} = {number}")
    else:
        print("invalid input")
        
    playAgain()
    
def playAgain():
    plya = input('''are you play again :''')
    if plya.lower() == "y":
        calculate()
    elif plya.lower() == 'n':
        print("Exit...")
    else:
        playAgain()
calculate()

سخن پایانی

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

و میتوان از کتابخانه هایی نظیر pyfiglet - coloroma - themcolor و... برای زیباتر کردن برنامه استفاده کرد  

تا درودی دیگر بدرود