Хорошо, я делаю это для проекта, и всякий раз, когда я пытаюсь получить его, делю на ноль или квадратный корень отрицательное число, которое программа закрывает. Я попытался найти что-то, что я мог бы вставить в код, чтобы он отобразил сообщение, а затем снова запросить значение, но все, что я пытался вставить, приводит к немедленному закрытию программы при запуске.
Вот калькулятор, в котором ничего не вставлено, чтобы исправить сбои.
import math
def convertString(str):
try:
returnValue = int(str)
except ValueError:
returnValue = float(str)
return returnValue
def addition(a, B):
return convertString(a) + convertString(B)
def subtraction(a, B):
return convertString(a) - convertString(B)
def multiplication(a, B):
return convertString(a) * convertString(B)
def division(a, B):
return convertString(a) / convertString(B)
def sqrt(a):
return math.sqrt(convertString(a))
keepProgramRunning = True
print "Welcome to [Removed]'s 2011 4-H Project! This is a simple calculator coded in Python, which is a high-level programming language. Java, C, C++, and Perl are other high-level programming languages that you may have heard of."
while keepProgramRunning:
print ""
print "Please choose what you would like to do:"
print ""
print "1) Addition"
print "2) Subtraction"
print "3) Multiplication"
print "4) Division"
print "5) Square Root"
print "6) Quit Program"
choice = raw_input()
if choice == "1":
numberA = raw_input("Enter your first addend: ")
numberB = raw_input("Enter your second addend: ")
print "The sum of those numbers is:"
print addition(numberA, numberB)
elif choice == "2":
numberA = raw_input("Enter your first term: ")
numberB = raw_input("Enter your second term: ")
print "The difference of those numbers is:"
print subtraction(numberA, numberB)
elif choice == "3":
numberA = raw_input("Enter your first factor: ")
numberB = raw_input("Enter your second factor: ")
print "The product of those numbers is:"
print multiplication(numberA, numberB)
elif choice == "4":
numberA = raw_input("Enter your dividend: ")
numberB = raw_input("Enter your divisor: ")
print "The quotient of those numbers is:"
print division(numberA, numberB)
elif choice == "5":
numberA = raw_input("Enter the number you wish to find the square root of: ")
print "Your result is:"
print sqrt(numberA)
elif choice == "6":
print "Goodbye! Thank you for your time spent both judging my project and those of everyone else! Have a nice day! (。◕‿◕。)"
keepProgramRunning = False
else:
print "Please choose a valid option."
print "\n"
Я не совсем уверен, что вставлять и где решать сбои, но я думаю, что проблема заключается в моем размещении.
Я пытался вставить что-то вроде этого:
except ValueError:
print "You cannot divide by zero. Please choose another divisor."
numberB = raw_input("Enter your divisor: ")
Будет ли это работать? Куда я вставлю это? Если это не сработает, что будет и куда пойдет?
Я пытался поставить его после
numberB = raw_input("Enter your divisor: ")
Так что этот раздел будет читать
elif choice == "4":
numberA = raw_input("Enter your dividend: ")
numberB = raw_input("Enter your divisor: ")
except ValueError:
print "You cannot divide by zero. Please choose another divisor."
numberB = raw_input("Enter your divisor: ")
print "The quotient of those numbers is:"
print division(numberA, numberB)
Но, как я уже сказал, программа закроется, как только откроется, когда я попробую это сделать. Кроме того, я знаю, что если они снова введут 0, программа потерпит крах. Есть ли способ заставить его вернуться на линию, под которой он находится?
Кроме того, для закрытия программы сообщение, которое она должна отображать, не может быть прочитано, поскольку программа закрывается сразу после ее отображения или команды выполняются одновременно. В любом случае, сообщение не может быть прочитано. Есть ли способ заставить сообщение появиться в отдельном диалоговом окне, которое приведет к закрытию программы при закрытии окна? Или хотя бы способ задержать его перед закрытием?
Пожалуйста, поправьте меня, если я неправильно понял терминологию. Я все еще немного новичок в этом.
И, как всегда, (конструктивная) обратная связь для любой части программы всегда приветствуется.