سلام?، در این قسمت از آموزش های پروژه محور پایتون با شما هستیم تا یک ماشین حساب پایتون رو بصورت خیلی ساده پیاده سازی کنیم. اول از همه باید بدونیم این برنامه ای که می خوایم بنویسیم چه کار هایی قراره انجام بده. همونطور که از اسمش هم پیداست قراره یه سری عددو (اینجا برای سادگی فقط 2 عدد) با هم جمع، تفریق، ضرب و تقسیم کنیم. یه همین سادگی.
نکته: قراره بصورت functional کد بنویسیم. یعنی کد های هر قسمتو بصورت جداگانه بنویسیم و بعد فراخوانی کنیم. مثلا ماژول جمع زدن، تفریق و… رو می نویسیم بعد تو هسته ی اصلی برنامه فراخوانی می کنیم.
خب چون کارمون با حساب و کتابه همون اول برنامه میایم کتابخونه ی math پایتون رو که برای محاسبات ریاضی هستش رو include می کنیم.
from math import *
بعدش یه پیام خوش آمد گویی برای استارت برنامه می نویسیم.
print ("Hello sir! welcome to Rabbit calculator...")
خب حالا نوبت به تعریف یه فانکشن برای منوی برنامه است. می خوایم لیستی از کارهایی که میشه رو بعلاوه ی operator هایی که کاربر باید بزنه تا اون کار انجام بشه رو وارد کنیم.
def options(): print("------------------------------------------------------------------") print("Options: ") print ("------------------------------------------------------------------") print("Enter '+' to add two numbers") print("Enter '-' to subtract two numbers") print("Enter '*' to multiply two numbers") print("Enter '/' to divide two numbers") print("Enter '**' to power two numbers") print("Enter '&' to square root ") print("Enter 'exit' to exit the calculator") print("------------------------------------------------------------------")
حالا توابع جمع، ضرب و… رو می نویسیم.
#divide function def divide(): try: num1, num2 = float(input("Enter first number: ")), float(input("Enter second number: ")) result = num1 / num2 print("The answer: ", result,"\n") except ZeroDivisionError: print ("Error: division by zero is not possible!") divide() finally: x = input ("wanna continue? (y/n) ") if x == "y" or x == "Y": divide() else: exit #Add function def add(): try: num1,num2 = float(input("Enter first number: ")),float(input("Enter second number: ")) result = num1 + num2 print ("The answer: ",result,"\n") except: print ("An error ooccured!") finally: r = input ("wanna continue? (y/n) ") if r == "y" or r == "Y": add() else: exit #Subtract function def subtract(): try: num1, num2 = float(input("Enter first number: ")), float(input("Enter second number: ")) result = num1 - num2 print("The answer: ", result,"\n") except: print ("An error ooccured!") finally: z = input ("wanna continue? (y/n) ") if z == "y" or z == "Y": subtract() else: exit #Multiply function def multiply(): try: num1, num2 = float(input("Enter first number: ")), float(input("Enter second number: ")) result = num1 * num2 print("The answer: ", result,"\n") except: print ("An error ooccured!") finally: y = input ("wanna continue? (y/n) ") if y == "y" or y == "Y": multiply() else: exit #Power function def power(): try: num1, num2 = float(input("Enter first number: ")), float(input("Enter second number: ")) result = num1 ** num2 print("The answer: ", result, "\n") del (result) except: print ("An error ooccured!") finally: a = input ("wanna continue? (y/n) ") if a == "y" or a == "Y": power() else: exit #Square root function def square_root(): try: num1 = float(input("Enter Your number: ")) result = sqrt(num1) print("The answer: ",result) except: print ("An error ooccured!") finally: b = input ("wanna continue? (y/n) ") if b == "y" or b == "Y": square_root() else: exit
حالا کد های اصلی برنامه رو که توش همه ی فانکشن ها رو فراخوانی کردیمو می نویسیم:
#Base codes while True: options() try: u_in = input("Enter Your command: ") if u_in == "exit" or u_in == "Exit" or u_in == "quit" or u_in == "Quit": print("Good bye!\n------------------------------------------------------------------") break elif u_in == "+": add() elif u_in == "-": subtract() elif u_in == "*": multiply() elif u_in == "/": divide() elif u_in == "**": power() elif u_in == "&": square_root() else: print ("check your input!\n") except: print ("An error ooccured!") #Show all errors raise
نکات:
- while True: یعنی تا بینهایت همینجوری اجرا بشه. چون شرطش برقراره.
- کد ها رو تو try گذاشتم تا اگه مشکلی تو اجراش پیش اومد بیام با دستور except یه متنی رو که خودم نوشتم به عنوان ارور نشون بده.
- دستور raise میاد ارور ها رو نشون میده. (در واقع تو انگلیسی هم raise به معنای بالا آوردنه)
دوستان هرکدوم از دستورات رو که نمتوجه نشدید میتونید همین پایین کامنت بزارید.
موفق باشید
لینک ها:
(04) دیدگاه
سلام دوست عزیز من ی برنامه ماشین حساب نوشاتم فقط بریا چهار عمل اصلی و میخوام بگم اگه مثلا بجز این چهارتا چیزی وارد شد اررور بده و اگر درست بود که ادامه بده ولی متاسفانه از هر متدی استفاده میکنم درست اجرا نمیشه میشه راهنمایی کنید ممنون. کد رو براتون میفرستم و بعد از syntax دچار مشکل شدم
#This program about calculate
def calculate():
opration = input(”’
Plase choise a one of four:
+
/
–
*
”’)
#For do better than program i describe Variable
syntax1 = ‘+’
syntax2 = ‘-‘
syntax3 = ‘*’
syntax4 = ‘/’
syntax_all = syntax1 or syntax2 or syntax3 or syntax4
# If user enter any symbol program show the error
if opration in syntax_all:
print(‘Tnx for choise coorect syntax. :)’)
elif opration not in syntax_all:
print(‘Choise correct syntax. ‘)
calculate()
number1 = int(input(‘Please enter your number: ‘))
number2 = int(input(‘Please enter your number: ‘))
if opration == ‘+’:
print (f’sum of your number is: {number1 + number2}’)
elif opration == ‘-‘:
print (f’Subtraction of your number is: {number1 – number2}’)
elif opration == ‘*’:
print (f’Multiplication of your number is: {number1 * number2}’)
elif opration == ‘/’:
print (f’apportionment of your number is: {number1 / number2 : 0.1f}’)
again()
def again():
calc_again = input(”’
Do you want to try???
IF you want to try Enter Y if you dont try Enter N tnx.
”’)
if calc_again.upper() == ‘Y’:
calculate()
elif calc_again.upper() == ‘N’:
print(‘Bye Bye’)
else:
again()
calculate()
سلام کد شما رو بررسی و اصلاح کردم.
فایل زیر اصلاح شده و به درستی کار می کند. موفق باشید
http://s4.picofile.com/file/8369266868/test.py.html
من برنامه شما را خواندم و دیدم کد هاش چه بدردی میخوره وچه کاربردی داره من تازه شروع کردم بعد کد های شما رو حفظ کردم یک خط رو مشکل داره اگر میشه پاسخ دهید
#divide function
def divide():
try:
num1, num2 = float(input(“Enter first number: “)), float(input(“Enter second number: “))
result = num1 / num2
print(“The answer: “, result,”\n”)
except ZeroDivisionError:
print (“Error: division by zero is not possible!”)
divide()
finally:
x = input (“wanna continue? (y/n) “)
if x == “y” or x == “Y”:
divide()
else:
exit
#Add function
def add():
try:
num1,num2 = float(input(“Enter first number: “)),float(input(“Enter second number: “))
result = num1 + num2
print (“The answer: “,result,”\n”)
except:
print (“An error ooccured!”)
finally:
r = input (“wanna continue? (y/n) “)
if r == “y” or r == “Y”:
add()
else:
exit
#Subtract function
def subtract():
try:
num1, num2 = float(input(“Enter first number: “)), float(input(“Enter second number: “))
result = num1 – num2
print(“The answer: “, result,”\n”)
except:
print (“An error ooccured!”)
finally:
z = input (“wanna continue? (y/n) “)
if z == “y” or z == “Y”:
subtract()
else:
exit
#Multiply function
def multiply():
try:
num1, num2 = float(input(“Enter first number: “)), float(input(“Enter second number: “))
result = num1 * num2
print(“The answer: “, result,”\n”)
except:
print (“An error ooccured!”)
finally:
y = input (“wanna continue? (y/n) “)
if y == “y” or y == “Y”:
multiply()
else:
exit
#Power function
def power():
try:
num1, num2 = float(input(“Enter first number: “)), float(input(“Enter second number: “))
result = num1 ** num2
print(“The answer: “, result, “\n”)
del (result)
except:
print (“An error ooccured!”)
finally:
a = input (“wanna continue? (y/n) “)
if a == “y” or a == “Y”:
power()
else:
exit
#Square root function
def square_root():
try:
num1 = float(input(“Enter Your number: “))
result = sqrt(num1)
print(“The answer: “,result)
except:
print (“An error ooccured!”)
finally:
b = input (“wanna continue? (y/n) “)
if b == “y” or b == “Y”:
square_root()
else:
exit
حالا کد های اصلی برنامه رو که توش همه ی فانکشن ها رو فراخوانی کردیمو می نویسیم:
#Base codes
while True:
options()
try:
u_in = input(“Enter Your command: “)
if u_in == “exit” or u_in == “Exit” or u_in == “quit” or u_in == “Quit”:
print(“Good bye!\n——————————————————————“)
break
elif u_in == “+”:
add()
elif u_in == “-“:
subtract()
elif u_in == “*”:
multiply()
elif u_in == “/”:
divide()
elif u_in == “**”:
power()
elif u_in == “&”:
square_root()
else:
print (“check your input!\n”)
except:
print (“An error ooccured!”)
#Show all errors
raise
خط 25 رو ارور میده و اگر جایی هم مشکل داشن به من بگید لطفا
و خیلی خوب بود
البته تو توابع جمع و تفریق و… که شما نوشتید میشه خط 20