From 4d05e13b2d993c96fca9d94d751b3d04347803aa Mon Sep 17 00:00:00 2001 From: Erdum Date: Sat, 28 Nov 2020 02:37:17 +0500 Subject: [PATCH 1/5] Electric power --- electronics/electric_power.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 electronics/electric_power.py diff --git a/electronics/electric_power.py b/electronics/electric_power.py new file mode 100644 index 000000000000..f4f7b368aed5 --- /dev/null +++ b/electronics/electric_power.py @@ -0,0 +1,34 @@ +# https://en.m.wikipedia.org/wiki/Electric_power + + +def electric_power(voltage: float, current: float, power: float) -> float: + """ + This function can calculate any one of the three (voltage, current, power), fundamental value of electrical system. + examples are below: + >>> electric_power(voltage=0, current=2, power=5) + {'voltage': 2.5} + >>> electric_power(voltage=2, current=2, power=0) + {'power': 4.0} + >>> electric_power(voltage=-2, current=3, power=0) + {'power': 6.0} + """ + if (voltage, current, power).count(0) != 1: + raise ValueError("Only one argument must be 0") + elif power < 0: + raise ValueError("Power cannot be negative in any electrical/electronics system") + elif voltage == 0: + return {'voltage': power / current} + elif current == 0: + return {'current': power / voltage} + elif power == 0: + # I created this variable because i want to remove negative sign from the power value + result = (float(voltage * current)) + if result < 0: + result = result * -1 + return {'power': result} + + +if __name__ == '__main__': + import doctest + + doctest.testmod() From 9b2826e10a2cde49a09cf21751e4a319a7cc7476 Mon Sep 17 00:00:00 2001 From: Erdum Date: Sat, 28 Nov 2020 13:41:30 +0500 Subject: [PATCH 2/5] updated as suggested by cclauss --- electronics/electric_power.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/electronics/electric_power.py b/electronics/electric_power.py index f4f7b368aed5..d5e5763a87ce 100644 --- a/electronics/electric_power.py +++ b/electronics/electric_power.py @@ -3,7 +3,8 @@ def electric_power(voltage: float, current: float, power: float) -> float: """ - This function can calculate any one of the three (voltage, current, power), fundamental value of electrical system. + This function can calculate any one of the three (voltage, current, power), + fundamental value of electrical system. examples are below: >>> electric_power(voltage=0, current=2, power=5) {'voltage': 2.5} @@ -15,20 +16,18 @@ def electric_power(voltage: float, current: float, power: float) -> float: if (voltage, current, power).count(0) != 1: raise ValueError("Only one argument must be 0") elif power < 0: - raise ValueError("Power cannot be negative in any electrical/electronics system") + raise ValueError( + "Power cannot be negative in any electrical/electronics system" + ) elif voltage == 0: - return {'voltage': power / current} + return {"voltage": power / current} elif current == 0: - return {'current': power / voltage} + return {"current": power / voltage} elif power == 0: - # I created this variable because i want to remove negative sign from the power value - result = (float(voltage * current)) - if result < 0: - result = result * -1 - return {'power': result} + return {"power": abs(float(voltage * current))} -if __name__ == '__main__': +if __name__ == "__main__": import doctest doctest.testmod() From ef4bccd34d753d9616ddf057f899cc28caab1b54 Mon Sep 17 00:00:00 2001 From: Erdum Date: Sat, 28 Nov 2020 13:44:45 +0500 Subject: [PATCH 3/5] updated as suggested by cclauss --- electronics/electric_power.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electronics/electric_power.py b/electronics/electric_power.py index d5e5763a87ce..ec464ed70cac 100644 --- a/electronics/electric_power.py +++ b/electronics/electric_power.py @@ -24,7 +24,7 @@ def electric_power(voltage: float, current: float, power: float) -> float: elif current == 0: return {"current": power / voltage} elif power == 0: - return {"power": abs(float(voltage * current))} + return {"power": float(abs(voltage * current))} if __name__ == "__main__": From cded2491714db1da8c4a975afe7d8fe47d9e0dce Mon Sep 17 00:00:00 2001 From: Erdum Date: Mon, 30 Nov 2020 00:35:24 +0500 Subject: [PATCH 4/5] decimal value error --- electronics/electric_power.py | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/electronics/electric_power.py b/electronics/electric_power.py index ec464ed70cac..afea6bec87f1 100644 --- a/electronics/electric_power.py +++ b/electronics/electric_power.py @@ -1,4 +1,5 @@ # https://en.m.wikipedia.org/wiki/Electric_power +from collections import namedtuple def electric_power(voltage: float, current: float, power: float) -> float: @@ -7,12 +8,27 @@ def electric_power(voltage: float, current: float, power: float) -> float: fundamental value of electrical system. examples are below: >>> electric_power(voltage=0, current=2, power=5) - {'voltage': 2.5} + result(name='voltage', value=2.5) >>> electric_power(voltage=2, current=2, power=0) - {'power': 4.0} + result(name='power', value=4.0) >>> electric_power(voltage=-2, current=3, power=0) - {'power': 6.0} + result(name='power', value=6.0) + >>> electric_power(voltage=2, current=4, power=2) + Traceback (most recent call last): + File "", line 15, in + ValueError: Only one argument must be 0 + >>> electric_power(voltage=0, current=0, power=2) + Traceback (most recent call last): + File "", line 19, in + ValueError: Only one argument must be 0 + >>> electric_power(voltage=0, current=2, power=-4) + Traceback (most recent call last): + File "", line 23, in >> electric_power(voltage=2.2, current=2.2, power=0) + result(name='power', value=4.84) """ + result = namedtuple("result", "name value") if (voltage, current, power).count(0) != 1: raise ValueError("Only one argument must be 0") elif power < 0: @@ -20,11 +36,11 @@ def electric_power(voltage: float, current: float, power: float) -> float: "Power cannot be negative in any electrical/electronics system" ) elif voltage == 0: - return {"voltage": power / current} + return result("voltage", power / current) elif current == 0: - return {"current": power / voltage} + return result("current", power / voltage) elif power == 0: - return {"power": float(abs(voltage * current))} + return result("power", float(abs(voltage * current))) if __name__ == "__main__": From fb2b10027c93ae6d23432c7b46071c9900ea8b45 Mon Sep 17 00:00:00 2001 From: Erdum Date: Mon, 30 Nov 2020 00:50:59 +0500 Subject: [PATCH 5/5] All done --- electronics/electric_power.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electronics/electric_power.py b/electronics/electric_power.py index afea6bec87f1..768c3d5c7232 100644 --- a/electronics/electric_power.py +++ b/electronics/electric_power.py @@ -40,7 +40,7 @@ def electric_power(voltage: float, current: float, power: float) -> float: elif current == 0: return result("current", power / voltage) elif power == 0: - return result("power", float(abs(voltage * current))) + return result("power", float(round(abs(voltage * current), 2))) if __name__ == "__main__":