#python
Вопрос:
Код, который я создаю, в основном состоит в том, что вам дается номер и база. Вы делите число на основание и получаете частное и остаток. Вы продолжаете делать это до тех пор, пока значение коэффициента не станет равным нулю, а затем вы складываете остатки в виде строки и возвращаете ее.
Оставшиеся значения 10 начинают превращаться в буквы.
Я отправил этот код на GitHub для оценки моим профессором, но я получаю ошибки из-за неправильных тестов? Я почти уверен, что тесты работают, но я не уверен, почему я получаю ноль по ним.
def convert(num: int, base: int) -> str:
if num < base:
return str(num) ""
remainder = (num % base)
if remainder <= 9:
return str(convert(num // base, base)) str(remainder) ""
elif remainder == 10:
return str(convert(num // base, base)) "A" ""
elif remainder == 11:
return str(convert(num // base, base)) "B" ""
elif remainder == 12:
return str(convert(num // base, base)) "C" ""
elif remainder == 13:
return str(convert(num // base, base)) "D" ""
elif remainder == 14:
return str(convert(num // base, base)) "E" ""
elif remainder == 15:
return str(convert(num // base, base)) "F" ""
elif remainder == 16:
return str(convert(num // base, base)) "G" ""
elif remainder == 17:
return str(convert(num // base, base)) "H" ""
elif remainder == 18:
return str(convert(num // base, base)) "I" ""
import unittest
from base_convert import convert
class Tests(unittest.TestCase):
def test_convert_base02_1(self):
self.assertEqual(convert(107, 2), '1101011')
def test_convert_base10_1(self):
self.assertEqual(convert(107, 10), '107')
def test_convert_base10_2(self):
self.assertEqual(convert(500, 10), '500')
def test_convert_base04_1(self):
self.assertEqual(convert(30, 4), '132')
def test_convert_base15_a(self):
self.assertEqual(convert(164, 14), '11A')
def test_convert_base16_b(self):
self.assertEqual(convert(107, 16), '6B')
def test_covert_base16_c(self):
self.assertEqual(convert(316, 16), '13C')
def test_convert_base17_d(self):
self.assertEqual(convert(513, 17), '1D3')
def test_convert_base15_e(self):
self.assertEqual(convert(164, 15), '10E')
def test_convert_base16_f(self):
self.assertEqual(convert(175, 16), '10F')
def test_convert_base19_g(self):
self.assertEqual(convert(187, 19), '9G')
def test_convert_base21_h(self):
self.assertEqual(convert(164, 21), '7H')
def test_convert_base19_i(self):
self.assertEqual(convert(208, 19), '10I')
if __name__ == '__main__':
unittest.main()
Комментарии:
1. Ваша проблема возникает, когда
num < base
, ноnum
больше, чем9
2. Не совсем ваш вопрос, но
strings.ascii_uppercase
содержит «ABCDEFG…Z». Вы могли бы использовать это вместо ваших семи различных случаев добавления буквы. Вы также можете также удалить""
. Это ничего не дает.