python 定义一个Stack类,包含list类型的私有属性data和指向栈顶位置的私有变量top,定义一个无参构造方法,初始化两个私有属性;另外需要定义入栈(push)、出栈(pop)、判断栈空(isEmpty)、取栈顶元素(getTop)、取栈中元素个数(getLen)的公共方法。 定义一个函数利用自己定会的Stack进行进制转换,可以计算任意进制的结果,把出栈后的序列转换为字符串返回给调用者 定义测试函数进行测试。
时间: 2024-03-16 21:42:35 浏览: 124
好的,以下是代码实现:
```python
class Stack:
def __init__(self):
self.__data = []
self.__top = -1
def push(self, value):
self.__top += 1
self.__data.append(value)
def pop(self):
if self.isEmpty():
return None
self.__top -= 1
return self.__data.pop()
def isEmpty(self):
return self.__top == -1
def getTop(self):
if self.isEmpty():
return None
return self.__data[self.__top]
def getLen(self):
return self.__top + 1
def decimal_to_arbitrary(decimal, base):
stack = Stack()
while decimal > 0:
stack.push(decimal % base)
decimal //= base
result = ""
while not stack.isEmpty():
result += str(stack.pop())
return result
def test_decimal_to_arbitrary():
decimal = 15
base = 2
expected_result = "1111"
assert decimal_to_arbitrary(decimal, base) == expected_result
decimal = 15
base = 8
expected_result = "17"
assert decimal_to_arbitrary(decimal, base) == expected_result
decimal = 15
base = 16
expected_result = "F"
assert decimal_to_arbitrary(decimal, base) == expected_result
print("All tests passed")
test_decimal_to_arbitrary()
```
在上述代码中,我们首先定义了一个 Stack 类,包含私有属性 `__data` 和 `__top`,以及入栈、出栈、判断栈空、取栈顶元素、取栈中元素个数的公共方法。接着,我们定义了一个 `decimal_to_arbitrary` 函数,利用 Stack 类进行进制转换,最后将出栈后的序列转换为字符串返回给调用者。最后,我们定义了一个测试函数 `test_decimal_to_arbitrary`,对 `decimal_to_arbitrary` 函数进行测试。
阅读全文