python 栈实现简单计算

今日学习了栈,栈的主要应用就是实现求解表达式,我们首先来理解一下栈求解表达式的原理:
栈的原理是先进来的先出去:
在这里插入图片描述
(上面为手绘,丑陋莫要建议,嘻嘻)进去的顺序为a,b,c,出来的顺序为c,b,a

中缀转后缀原理:
遇到数字放一边,遇到符号入栈,入栈规则是:如果栈顶的符号的优先级小于目标优先级,则目标优先级入栈:
在这里插入图片描述
求解原理:首先将后缀表达式按顺序入栈,符号出栈,计算符号下面的两个数并将结果入栈,最后留下的数字是求解结果
在这里插入图片描述
python代码:


```python
# 用python实现ADT Stack
class Stack:
    def __init__(self):
        self.items = []

    def isEmpty(self):
        return self.items == []

    def push(self, item):
        self.items.append(item)

    def pop(self):
        return self.items.pop()

    def peek
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Python实现顺序的进制转换的示例代码: ```python class Stack: def __init__(self): self.items = [] def is_empty(self): return len(self.items) == 0 def push(self, item): self.items.append(item) def pop(self): if not self.is_empty(): return self.items.pop() def peek(self): if not self.is_empty(): return self.items[-1] def size(self): return len(self.items) def base_converter(decimal_number, base): digits = "0123456789ABCDEF" stack = Stack() while decimal_number > 0: rem = decimal_number % base stack.push(rem) decimal_number //= base new_digits = "" while not stack.is_empty(): new_digits += digits[stack.pop()] return new_digits print(base_converter(20, 2)) # Output: 10100 print(base_converter(20, 8)) # Output: 24 print(base_converter(20, 16)) # Output: 14 ``` 在这个示例中,我们定义了一个名为`Stack`的类,它表示一个简单数据结构。然后,我们定义了一个名为`base_converter`的函数,该函数接受两个参数:`decimal_number`表示需要转换的十进制数字,`base`表示需要转换的目标进制。该函数首先将十进制数字转换为目标进制,然后将转换后的数字作为字符串返回。 该函数的操作如下: 1. 定义一个名为`digits`的字符串,该字符串包含目标进制中使用的数字字符。 2. 创建一个名为`stack`的新。 3. 当`decimal_number`大于0时,重复以下步骤: - 计算`decimal_number`除以`base`的余数,并将余数压入中。 - 将`decimal_number`除以`base`的商赋值给`decimal_number`。 4. 创建一个名为`new_digits`的空字符串。 5. 当不为空时,重复以下步骤: - 从中弹出一个元素,并将该元素加入`new_digits`字符串中。 6. 返回`new_digits`字符串。 我们使用三个示例输入测试了此函数。第一个示例将十进制数字20转换为二进制数字10100,第二个示例将十进制数字20转换为八进制数字24,第三个示例将十进制数字20转换为十六进制数字14。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值