В наборе задач 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
Программы на Python
1727372856
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%"
Подробнее здесь: [url]https://stackoverflow.com/questions/79028582/working-on-simplifying-my-project-work-for-easier-testing-for-cs50-i-feel-like[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия