From a14850de659e933d459b120702728fef23174b64 Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Mon, 6 Jul 2020 08:16:22 +0200 Subject: [PATCH] Improved the roman number function and fixed a bug in it --- nw/core/tools.py | 14 ++++++++------ nw/gui/build.py | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/nw/core/tools.py b/nw/core/tools.py index c4455ff1..dd2c8c84 100644 --- a/nw/core/tools.py +++ b/nw/core/tools.py @@ -91,23 +91,25 @@ def countWords(theText): def numberToRoman(numVal, isLower=False): """Convert an integer to a roman number. """ - if numVal < 1 or numVal > 4999: + if not isinstance(numVal, int): return "NAN" + if numVal < 1 or numVal > 4999: + return "OOR" - theValues = [ + theValues = [ (1000, "M"), (900, "CM"), (500, "D"), (400, "CD"), (100, "C"), (90, "XC"), (50, "L"), (40, "XL"), (10, "X"), (9, "IX"), (5, "V"), (4, "IV"), (1, "I"), ] romNum = "" for theDiv, theSym in theValues: - for _ in range(numVal//theDiv): - romNum += theSym - numVal -= theDiv + n = numVal//theDiv + romNum += n*theSym + numVal -= n*theDiv if numVal <= 0: break - return romNum.lower if isLower else romNum + return romNum.lower() if isLower else romNum # =============================================================================================== # # Convert an Integer to a Word Number diff --git a/nw/gui/build.py b/nw/gui/build.py index 7220639b..34a01f05 100644 --- a/nw/gui/build.py +++ b/nw/gui/build.py @@ -46,7 +46,7 @@ from PyQt5.QtWidgets import ( from nw.common import fuzzyTime from nw.gui.custom import QSwitch -from nw.core import ToHtml, numberToRoman +from nw.core import ToHtml from nw.constants import ( nwAlert, nwFiles, nwItemType, nwItemLayout, nwItemClass )