Как здесь сделать проверку, что нельзя делить на 0 (ноль)

Как здесь сделать проверку, что нельзя делить на 0 (ноль)

def add_fuctions(self):
    self.Button0.clicked.connect(lambda: self.write_number(self.Button0.text()))
    self.Button1.clicked.connect(lambda: self.write_number(self.Button1.text()))
    self.Button2.clicked.connect(lambda: self.write_number(self.Button2.text()))
    self.Button3.clicked.connect(lambda: self.write_number(self.Button3.text()))
    self.Button4.clicked.connect(lambda: self.write_number(self.Button4.text()))
    self.Button5.clicked.connect(lambda: self.write_number(self.Button5.text()))
    self.Button6.clicked.connect(lambda: self.write_number(self.Button6.text()))
    self.Button7.clicked.connect(lambda: self.write_number(self.Button7.text()))
    self.Button8.clicked.connect(lambda: self.write_number(self.Button8.text()))
    self.Button9.clicked.connect(lambda: self.write_number(self.Button9.text()))
    self.Button_min.clicked.connect(lambda: self.write_number(self.Button_min.text()))
    self.Button_pius.clicked.connect(lambda: self.write_number(self.Button_pius.text()))
    self.Button_umn.clicked.connect(lambda: self.write_number(self.Button_umn.text()))
    self.Button_dil.clicked.connect(lambda: self.write_number(self.Button_dil.text()))
    self.Button_rav.clicked.connect(self.results)
    self.Button_del.clicked.connect(self.delete)

def delete(self):
    self.label_result.setText("0")

def write_number(self, number):
    if self.label_result.text() == "0" or self.is_equal:
        self.label_result.setText(number)
        self.is_equal = False
        self.Button_rav.setEnabled(True)
    else:
        self.label_result.setText(self.label_result.text() + number)
        self.is_equal = False
        self.Button_rav.setEnabled(True)
def results(self):
    res = eval(self.label_result.text())
    self.label_result.setText("Результат: " + str(res))
    self.is_equal = True
    self.Button_rav.setEnabled(False)

Ответы (3 шт):

Автор решения: Илья Стешенко

почитай про исключения.

def results(self):
    try:
        res = eval(self.label_result.text())
    except ZeroDivisionError: #ZeroDivisionError - ошибка деления на ноль
        res = 0
    self.label_result.setText("Результат: " + str(res))
    self.is_equal = True
    self.Button_rav.setEnabled(False)
→ Ссылка
Автор решения: S. Nick

Попробуйте так:

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(361, 588)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.outputLabel = QtWidgets.QLabel(self.centralwidget)
        self.outputLabel.setGeometry(QtCore.QRect(10, 10, 341, 91))
        font = QtGui.QFont()
        font.setPointSize(36)
        self.outputLabel.setFont(font)
        self.outputLabel.setFrameShape(QtWidgets.QFrame.Box)
        self.outputLabel.setFrameShadow(QtWidgets.QFrame.Raised)
        self.outputLabel.setLineWidth(2)
        self.outputLabel.setAlignment(QtCore.Qt.AlignRight | 
            QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.outputLabel.setObjectName("outputLabel")
        self.percentButton = QtWidgets.QPushButton(self.centralwidget)
        self.percentButton.setGeometry(QtCore.QRect(10, 110, 75, 75))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.percentButton.setFont(font)
        self.percentButton.setObjectName("percentButton")
        self.cButton = QtWidgets.QPushButton(self.centralwidget)
        self.cButton.setGeometry(QtCore.QRect(100, 110, 75, 75))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.cButton.setFont(font)
        self.cButton.setObjectName("cButton")
        self.arrowButton = QtWidgets.QPushButton(self.centralwidget)
        self.arrowButton.setGeometry(QtCore.QRect(190, 110, 75, 75))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.arrowButton.setFont(font)
        self.arrowButton.setObjectName("arrowButton")
        self.divideButton = QtWidgets.QPushButton(self.centralwidget)
        self.divideButton.setGeometry(QtCore.QRect(275, 110, 75, 75))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.divideButton.setFont(font)
        self.divideButton.setObjectName("divideButton")
        self.multiplyButton = QtWidgets.QPushButton(self.centralwidget)
        self.multiplyButton.setGeometry(QtCore.QRect(275, 200, 75, 75))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.multiplyButton.setFont(font)
        self.multiplyButton.setObjectName("multiplyButton")
        self.nineButton = QtWidgets.QPushButton(self.centralwidget)
        self.nineButton.setGeometry(QtCore.QRect(190, 200, 75, 75))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.nineButton.setFont(font)
        self.nineButton.setObjectName("nineButton")
        self.sevenButton = QtWidgets.QPushButton(self.centralwidget)
        self.sevenButton.setGeometry(QtCore.QRect(10, 200, 75, 75))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.sevenButton.setFont(font)
        self.sevenButton.setObjectName("sevenButton")
        self.eightButton = QtWidgets.QPushButton(self.centralwidget)
        self.eightButton.setGeometry(QtCore.QRect(100, 200, 75, 75))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.eightButton.setFont(font)
        self.eightButton.setObjectName("eightButton")
        self.minusButton = QtWidgets.QPushButton(self.centralwidget)
        self.minusButton.setGeometry(QtCore.QRect(275, 290, 75, 75))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.minusButton.setFont(font)
        self.minusButton.setObjectName("minusButton")
        self.sixButton = QtWidgets.QPushButton(self.centralwidget)
        self.sixButton.setGeometry(QtCore.QRect(190, 290, 75, 75))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.sixButton.setFont(font)
        self.sixButton.setObjectName("sixButton")
        self.fourButton = QtWidgets.QPushButton(self.centralwidget)
        self.fourButton.setGeometry(QtCore.QRect(10, 290, 75, 75))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.fourButton.setFont(font)
        self.fourButton.setObjectName("fourButton")
        self.fiveButton = QtWidgets.QPushButton(self.centralwidget)
        self.fiveButton.setGeometry(QtCore.QRect(100, 290, 75, 75))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.fiveButton.setFont(font)
        self.fiveButton.setObjectName("fiveButton")
        self.addButton = QtWidgets.QPushButton(self.centralwidget)
        self.addButton.setGeometry(QtCore.QRect(275, 380, 75, 75))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.addButton.setFont(font)
        self.addButton.setObjectName("addButton")
        self.threeButton = QtWidgets.QPushButton(self.centralwidget)
        self.threeButton.setGeometry(QtCore.QRect(190, 380, 75, 75))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.threeButton.setFont(font)
        self.threeButton.setObjectName("threeButton")
        self.oneButton = QtWidgets.QPushButton(self.centralwidget)
        self.oneButton.setGeometry(QtCore.QRect(10, 380, 75, 75))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.oneButton.setFont(font)
        self.oneButton.setObjectName("oneButton")
        self.twoButton = QtWidgets.QPushButton(self.centralwidget)
        self.twoButton.setGeometry(QtCore.QRect(100, 380, 75, 75))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.twoButton.setFont(font)
        self.twoButton.setObjectName("twoButton")
        self.equalButton = QtWidgets.QPushButton(self.centralwidget)
        self.equalButton.setGeometry(QtCore.QRect(275, 470, 75, 75))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.equalButton.setFont(font)
        self.equalButton.setObjectName("equalButton")
        self.decimalButton = QtWidgets.QPushButton(self.centralwidget)
        self.decimalButton.setGeometry(QtCore.QRect(190, 470, 75, 75))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.decimalButton.setFont(font)
        self.decimalButton.setObjectName("decimalButton")
        self.plusminusButton = QtWidgets.QPushButton(self.centralwidget)
        self.plusminusButton.setGeometry(QtCore.QRect(10, 470, 75, 75))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.plusminusButton.setFont(font)
        self.plusminusButton.setObjectName("plusminusButton")
        self.zeroButton = QtWidgets.QPushButton(self.centralwidget)
        self.zeroButton.setGeometry(QtCore.QRect(100, 470, 75, 75))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.zeroButton.setFont(font)
        self.zeroButton.setObjectName("zeroButton")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 361, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Calculator"))
        self.outputLabel.setText(_translate("MainWindow", "0"))
        self.percentButton.setText(_translate("MainWindow", "%"))
        self.cButton.setText(_translate("MainWindow", "C"))
        self.arrowButton.setText(_translate("MainWindow", "<<"))
        self.divideButton.setText(_translate("MainWindow", "/"))
        self.multiplyButton.setText(_translate("MainWindow", "x"))
        self.nineButton.setText(_translate("MainWindow", "9"))
        self.sevenButton.setText(_translate("MainWindow", "7"))
        self.eightButton.setText(_translate("MainWindow", "8"))
        self.minusButton.setText(_translate("MainWindow", "-"))
        self.sixButton.setText(_translate("MainWindow", "6"))
        self.fourButton.setText(_translate("MainWindow", "4"))
        self.fiveButton.setText(_translate("MainWindow", "5"))
        self.addButton.setText(_translate("MainWindow", "+"))
        self.threeButton.setText(_translate("MainWindow", "3"))
        self.oneButton.setText(_translate("MainWindow", "1"))
        self.twoButton.setText(_translate("MainWindow", "2"))
        self.equalButton.setText(_translate("MainWindow", "="))
        self.decimalButton.setText(_translate("MainWindow", "."))
        self.plusminusButton.setText(_translate("MainWindow", "+/-"))
        self.zeroButton.setText(_translate("MainWindow", "0"))


class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        
        self.percentButton.clicked.connect(lambda: self.press_it("%"))
        self.cButton.clicked.connect(lambda: self.press_it("C"))
        self.arrowButton.clicked.connect(lambda: self.remove_it())
        self.divideButton.clicked.connect(lambda: self.press_it("/"))
        self.multiplyButton.clicked.connect(lambda: self.press_it("*"))
        self.minusButton.clicked.connect(lambda: self.press_it("-"))
        self.addButton.clicked.connect(lambda: self.press_it("+"))
        self.nineButton.clicked.connect(lambda: self.press_it("9"))
        self.eightButton.clicked.connect(lambda: self.press_it("8"))
        self.sevenButton.clicked.connect(lambda: self.press_it("7"))
        self.sixButton.clicked.connect(lambda: self.press_it("6"))
        self.fiveButton.clicked.connect(lambda: self.press_it("5"))
        self.fourButton.clicked.connect(lambda: self.press_it("4"))
        self.threeButton.clicked.connect(lambda: self.press_it("3"))
        self.twoButton.clicked.connect(lambda: self.press_it("2"))
        self.oneButton.clicked.connect(lambda: self.press_it("1"))
        self.zeroButton.clicked.connect(lambda: self.press_it("0"))
        self.equalButton.clicked.connect(lambda: self.math_it())
        self.decimalButton.clicked.connect(lambda: self.dot_it())
        self.plusminusButton.clicked.connect(lambda: self.plus_minus_it())

    # Удалить символ
    def remove_it(self):
        # Возьмите то, что уже есть на экране
        screen = self.outputLabel.text()
        # Удалить последний элемент в строке
        screen = screen[:-1]
        # Вывод обратно на экран
        self.outputLabel.setText(screen)

    # Математика
    def math_it(self):
        screen = self.outputLabel.text()
        try:
            # Делать математику
            answer = eval(screen)
            # Вывод ответа на экран
            self.outputLabel.setText(str(answer))
        except:
            # Выводить ошибку на экран
            self.outputLabel.setText("ERROR")

    # Изменение с положительного / отрицательного
    def plus_minus_it(self):
        screen = self.outputLabel.text()
        if "-" in screen:
            self.outputLabel.setText(screen.replace("-", ""))
        else:
            self.outputLabel.setText(f'-{screen}')

    # Добавить десятичную дробь
    def dot_it(self):
        screen = self.outputLabel.text()
        if screen[-1] == ".":
            pass
        else:
            self.outputLabel.setText(f'{screen}.')         

    def press_it(self, pressed):
        if pressed == "C":
            self.outputLabel.setText("0")
        else:
            # Проверяем, начинается ли с 0 и удаляем 0
            if self.outputLabel.text() == "0":
                self.outputLabel.setText("")    
            # Связываем нажатую кнопку с тем, что уже было
            self.outputLabel.setText(f'{self.outputLabel.text()}{pressed}')        
        

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка
Автор решения: vadim vaduxa

в данном случае вариант хуже чем try/except, но иногда удобнее использовать contextlib.suppress

from contextlib import suppress

res = 'нельзя делить на 0 (ноль)'
with suppress(ZeroDivisionError):
    res = 1 / 0
print(res)
→ Ссылка