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) Result(name='voltage', value=2.5) >>> electric_power(voltage=2, current=2, power=0) R
(voltage: float, current: float, power: float)
| 10 | |
| 11 | |
| 12 | def electric_power(voltage: float, current: float, power: float) -> tuple: |
| 13 | """ |
| 14 | This function can calculate any one of the three (voltage, current, power), |
| 15 | fundamental value of electrical system. |
| 16 | examples are below: |
| 17 | >>> electric_power(voltage=0, current=2, power=5) |
| 18 | Result(name='voltage', value=2.5) |
| 19 | >>> electric_power(voltage=2, current=2, power=0) |
| 20 | Result(name='power', value=4.0) |
| 21 | >>> electric_power(voltage=-2, current=3, power=0) |
| 22 | Result(name='power', value=6.0) |
| 23 | >>> electric_power(voltage=2, current=4, power=2) |
| 24 | Traceback (most recent call last): |
| 25 | ... |
| 26 | ValueError: Exactly one argument must be 0 |
| 27 | >>> electric_power(voltage=0, current=0, power=2) |
| 28 | Traceback (most recent call last): |
| 29 | ... |
| 30 | ValueError: Exactly one argument must be 0 |
| 31 | >>> electric_power(voltage=0, current=2, power=-4) |
| 32 | Traceback (most recent call last): |
| 33 | ... |
| 34 | ValueError: Power cannot be negative in any electrical/electronics system |
| 35 | >>> electric_power(voltage=2.2, current=2.2, power=0) |
| 36 | Result(name='power', value=4.84) |
| 37 | >>> electric_power(current=0, power=6, voltage=2) |
| 38 | Result(name='current', value=3.0) |
| 39 | """ |
| 40 | if (voltage, current, power).count(0) != 1: |
| 41 | raise ValueError("Exactly one argument must be 0") |
| 42 | elif power < 0: |
| 43 | raise ValueError( |
| 44 | "Power cannot be negative in any electrical/electronics system" |
| 45 | ) |
| 46 | elif voltage == 0: |
| 47 | return Result("voltage", power / current) |
| 48 | elif current == 0: |
| 49 | return Result("current", power / voltage) |
| 50 | elif power == 0: |
| 51 | return Result("power", float(round(abs(voltage * current), 2))) |
| 52 | else: |
| 53 | raise AssertionError |
| 54 | |
| 55 | |
| 56 | if __name__ == "__main__": |