Работаю над упрощением работы над проектом для облегчения тестирования CS50. Мне кажется, что я выдаю больше ошибок, чемPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Работаю над упрощением работы над проектом для облегчения тестирования CS50. Мне кажется, что я выдаю больше ошибок, чем

Сообщение Anonymous »

В наборе задач 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»