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

برای ساخت یک ماشین حساب ابتدا باید عملیات ریاضی را مشخص کنیم (ضرب یا جمع یا...). برای این کار از یک input استفاده می کنیم:

math_operation=input("Pleace select math operation('-' or '+' or '*' or '/'): ")

حال باید چک کنیم که آیا کاربر واقعا عملیات ریاضی انتخاب کرده؟ اگر چیز دیگری است دوباره از او عملیات ریاضی بپرس:

while math_operation!="-" and math_operation!="+" and math_operation!="*" and math_operation!="/":
math_operation=input("Retry. Select math operation('-' or '+' or '*' or '/'): ")

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

number1=input("number one: ")
N1=number1.isnumeric()
while N1==False:
number1=input("Retry. Write number one: ")
N1=number1.isnumeric()
number1=int(number1)

ما number1 را در ابتدا int نکرده ایم. زیرا اگر int باشد دیگر نمی توانیم از isnumeric استفاده کنیم.

با استفاده از ()number1.isnumeric می توانیم بفهمیم که آیا number1 عدد است یا نه. اگر عدد نبود مقدار False را و اگر عدد بود مقدار True را به ما برمی گرداند. ما هم از همین استفاده کردیم و شرطی تنظیم کرده ایم که اگر False بود، دوباره از او عدد بپرس.

سپس برای اینکه بتوانیم بر روی number1 عملیات انجام دهیم آن را int می کنیم.

همین کار ها را برای عدد دوم هم انجام می دهیم :

number2=input("number two: ")
N2=number2.isnumeric()
while N2==False:
number2=input("Retry. Write number two: ")
N2=number2.isnumeric()
number2=int(number2)

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

number2=input("number two: ")
N2=number2.isnumeric()
while N2==False:
number2=input("Retry. Write number two: ")
N2=number2.isnumeric()
number2=int(number2)

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

while True:
math_operation=input("Select math operation('-' or '+' or '*' or '/'): ")

while math_operation!="-" and math_operation!="+" and math_operation!="*" and math_operation!="/":
math_operation=input("Retry. Select math operation ('-' or '+' or '*' or '/'): ")

number1=input("number : ")
N1=number1.isnumeric()
while N1==False:
number1=input("Retry. Write number: ")
N1=number1.isnumeric()
number1=int(number1)

if math_operation=="-":
print(str(result)+" - "+ str(number1) + " = " +str(result-number1))
elif math_operation=="+":
print(str(result)+" + "+ str(number1) + " = " +str(result+number1))
elif math_operation=="*":
print(str(result)+" * "+ str(number1) + " = " +str(result*number1))
elif math_operation=="/":
print(str(result)+" / "+ str(number1) + " = " + str(result/number1))

اگر همه چیز خوب پیش رفته باشد، اگر شما ابتدا عملیات را - و عدد ها را 54 و 21 و سپس عملیات را * و عدد را 10 تنظیم کنید، باید این گونه شود:

Pleace select math operation('-' or '+' or '*' or '/'): -
number one: 54
number two: 21
54 - 21 = 33
Select math operation('-' or '+' or '*' or '/'): *
number : 10
33 * 10 = 330
Select math operation('-' or '+' or '*' or '/'):

کد کامل:

math_operation=input("Pleace select math operation('-' or '+' or '*' or '/'): ")
while math_operation!="-" and math_operation!="+" and math_operation!="*" and math_operation!="/":
math_operation=input("Retry. Select math operation('-' or '+' or '*' or '/'): ")
number1=input("number one: ")
N1=number1.isnumeric()
while N1==False:
number1=input("Retry. Write number one: ")
N1=number1.isnumeric()
number1=int(number1)
number2=input("number two: ")
N2=number2.isnumeric()
while N2==False:
number2=input("Retry. Write number two: ")
N2=number2.isnumeric()
number2=int(number2)
if math_operation=="-":
result=number1-number2
print(str(number1)+" - "+str(number2)+" = "+ str(result))
elif math_operation=="+":
result=number1+number2
print(str(number1)+" + "+str(number2)+" = "+ str(result))
elif math_operation=="*":
result=number1*number2
print(str(number1)+" * "+str(number2)+" = "+ str(result))
elif math_operation=="/":
result=number1/number2
print(str(number1)+" / "+str(number2)+" = "+ str(result))
while True:
math_operation=input("Select math operation('-' or '+' or '*' or '/'): ")

while math_operation!="-" and math_operation!="+" and math_operation!="*" and math_operation!="/":
math_operation=input("Retry. Select math operation ('-' or '+' or '*' or '/'): ")

number1=input("number : ")
N1=number1.isnumeric()
while N1==False:
number1=input("Retry. Write number: ")
N1=number1.isnumeric()
number1=int(number1)

if math_operation=="-":
print(str(result)+" - "+ str(number1) + " = " +str(result-number1))
elif math_operation=="+":
print(str(result)+" + "+ str(number1) + " = " +str(result+number1))
elif math_operation=="*":
print(str(result)+" * "+ str(number1) + " = " +str(result*number1))
elif math_operation=="/":
print(str(result)+" / "+ str(number1) + " = " + str(result/number1))