В наборе задач 5 CS50 ReFueling меня просят написать программу, имеющую две функции. Один, который преобразует строку из формата «x/y» в целое число, а другой, который принимает целое число и выводит, либо полностью пуст, либо int отформатирован с процентом в конце. Я думаю, что мое решение работоспособно, но его трудно читать. Мне нужна помощь, как упростить мою программу, сохранив при этом возможность тщательно ее протестировать.
Мое решение
def main():
while True:
fraction = input("Fraction: ")
percentage = convert(fraction)
if isinstance(percentage, float) == True:
print(gauge(percentage))
def convert(fraction):
if isinstance(fraction, int):
raise ValueError
fraction = fraction.split("/")
if fraction[1] == "0":
raise ZeroDivisionError
x = int(fraction[0])
y = int(fraction[1])
if not isinstance(x, int) or not isinstance(y, int):
raise ValueError
frac_value = int(x) / int(y)
percentage = frac_value * 100
if percentage > 100:
raise ValueError
else:
return percentage
def gauge(percentage):
if percentage = 99:
return "F"
else:
return f"{round(percentage)}%"
if __name__ == "__main__":
main()
А это мои текущие тесты
import pytest
from fuel import convert, gauge
def test_convert_returns_int():
assert convert("1/2") == 50
def test_convert_valueerror():
with pytest.raises(ValueError):
convert(2)
def test_convert_zde():
with pytest.raises(ZeroDivisionError):
convert("1/0")
def test_gauge_returns_E():
assert gauge(1) == "E"
def test_gauge_returns_F():
assert gauge(99) == "F"
def test_gauge_returns_str_w_percentage():
assert gauge(30) == "30%"
Подробнее здесь: https://stackoverflow.com/questions/790 ... -feel-like
Работаю над упрощением работы над проектом для облегчения тестирования CS50. Мне кажется, что я выдаю больше ошибок, чем ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Симпи с проблем с упрощением фракций, которые легко упрощаются вручную
Anonymous » » в форуме Python - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Я работаю над проектом количественного анализа и не могу исправить эту ошибку json.
Anonymous » » в форуме Python - 0 Ответы
- 51 Просмотры
-
Последнее сообщение Anonymous
-