def test_stack_size(self): stk = Stack() random_values = get_random_values() for i, v in enumerate(random_values): stk.push(v) self.assertEqual(stk.size(), i + 1) for i in range(len(random_values)): stk.pop() self.assertEqual(stk.size(), len(random_values) - i - 1)
def dec_to_bin(dec): s = Stack() while(dec>0): s.push(dec%2) dec // 2 binary = 0 for i in range(s.size()): num = s.pop() binary += num*(10**s.size()) return binary
def test_stack_init(self): stk = Stack() self.assertEqual(stk.size(), 0) self.assertEqual(stk.is_empty(), True) with self.assertRaises(IndexError): stk.pop() with self.assertRaises(IndexError): stk.peek()
def test_stack_copy(self): stk = Stack() random_values = get_random_values() for v in random_values: stk.push(v) copied_stk = stk.copy() for v in random_values[::-1]: self.assertEqual(copied_stk.peek(), v) copied_stk.pop() self.assertEqual(stk.size(), len(random_values))
def test_stack_reversed(self): stk = Stack() random_values = get_random_values() for v in random_values: stk.push(v) reversed_stk = reversed(stk) for v in random_values: self.assertEqual(reversed_stk.peek(), v) reversed_stk.pop() self.assertEqual(stk.size(), len(random_values))
def dec_to_bin(dec): binary = '' s = Stack() while dec != 0: tmp = dec % 2 dec = dec // 2 s.push(tmp) while s.size() != 0: a = s.pop() binary += str(a) return binary
def test_stack_reversed_with_override(self): self.assertEqual(list(reversed([123, 456])), [456, 123]) stk = Stack() random_values = get_random_values() for v in random_values: stk.push(v) reversed_stk = reversed(stk) for v in random_values: self.assertEqual(reversed_stk.peek(), v) reversed_stk.pop() self.assertEqual(stk.size(), len(random_values)) self.assertEqual(list(reversed([123, 456])), [456, 123])
def dec_to_bin(dec): s = Stack() n = dec if n == 0: s.push(n % 2) n = n // 2 while n > 0: s.push(n % 2) n = n // 2 number = s.size() binary = '' for i in range(number): binary = binary + str(s.pop()) return binary
def dec_to_bin2(dec): s = Stack() i = 0 for j in range(10000): if(dec // (2**j) == 0): i = j break binary = 0 for k in range(i): k = i - k if(dec % (2 ** k) // (2 ** (k-1)) == 1): s.push(1) else: s.push(0) for l in range(s.size()): binary += s.pop() * (10 ** l) return binary
def base_converter(dec_number, base): digits = "0123456789ABCDEF" s = Stack() n = dec_number while n > 0: number = n % base if number > 9: s.push(digits[number]) else: s.push(n % base) n = n // base number = s.size() string = '' for i in range(number): string = string + str(s.pop()) return string
def base_converter(dec, base): binary = '' s = Stack() while dec != 0: if base > 16 or base < 2: #若base輸入值不符合範圍,輸出error return "error" tmp = dec % base dec = dec // base if tmp >= 10: d = tmp % 10 tmp = chr(65 + d) s.push(tmp) while s.size() != 0: a = s.pop() binary += str(a) return binary