Closed nidunc closed 5 hours ago
Het is hierbij natuurlijk ook belangrijk om te overwegen wat al in de UI gedaan moet worden, en wat beter is om achter de schermen door de calculator
module te laten doen.
Bijvoorbeeld: willen we bij voorbaat al verbieden dat je 1+-+-+-+-0
of 1:0
in kan voeren, of is het beter om deze invoer te accepteren en code aan de calculator
module toe te voegen die ervoor zorgt dat de berekening geldig is (of, in het laatste geval, dat er een foutmelding als het resultaat wordt teruggekoppeld) voordat deze gebruikt wordt? (Overigens wordt het eerste voorbeeld al geaccepteerd door de package die ik gebruik voor het evalueren van de berekening, maar dat even terzijde.)
Het is hierbij natuurlijk ook belangrijk om te overwegen wat al in de UI gedaan moet worden, en wat beter is om achter de schermen door de
calculator
module te laten doen. Bijvoorbeeld: willen we bij voorbaat al verbieden dat je1+-+-+-+-0
of1:0
in kan voeren, of is het beter om deze invoer te accepteren en code aan decalculator
module toe te voegen die ervoor zorgt dat de berekening geldig is (of, in het laatste geval, dat er een foutmelding als het resultaat wordt teruggekoppeld) voordat deze gebruikt wordt? (Overigens wordt het eerste voorbeeld al geaccepteerd door de package die ik gebruik voor het evalueren van de berekening, maar dat even terzijde.)
Invoer als "+-+-+-+-" is onnodig om te accepteren lijkt mij.
Ik ben het eens met het idee om devision by zero case te handelen in calculator.py. Die bijvoorbeeld dan de tekst "Kan niet delen door nul".
De calculator van windows doet dit ook zo:
Invoer als "+-+-+-+-" is onnodig om te accepteren lijkt mij.
Eens; het was vooral een willekeurig voorbeeld wat in me opkwam, dat in principe wel ‘geldig’ is, maar verder obscuur genoeg is dat er inderdaad geen rekening mee gehouden hoeft te worden.
Ik ben het eens met het idee om devision by zero case te handelen in calculator.py. Die bijvoorbeeld dan de tekst "Kan niet delen door nul".
Hier ben ik mee bezig. Op dit moment heb ik gewoon een simpel try, except
blok toegevoegd dat alle foutmeldingen opvangt en dan een return "Ongeldige berekening"
doet als er errors zijn.
Ok, ik zal het testen en mergen als je het klaar hebt :)
Ik heb pull request #14 aangemaakt.
Deze functie is iets te strikt: https://github.com/mhoek2/pycalculator/blob/adc7a3eb24c4868668b9d4e0c0f979fcce1b352e/modules/gui/gui.py#L188-L203
Op dit moment worden de volgende legitieme berekeningen niet toegestaan:
0
(bijvoorbeeld0,1
),+_x:
)`;0
achter de komma (bijvoorbeeld5678,01234
);1234+-5678
,9*-1
, etc.);-
of een nul (zie ook het eerste voorbeeld).Misschien zijn er nog meer voorbeelden, maar dit zijn in ieder geval degenen die ik tot dusver kon bedenken.