来帮我用Python语言写一个计算器程序代码吧。输入为字符串表达式,如"3+2*2",运算包括加减乘除,计算结果取整。输出为表达式的计算结果。
时间: 2023-02-26 09:14:47 浏览: 52
当然,以下是一个简单的代码实现:
```
def calculator(expression):
tokens = expression.split()
stack = []
for token in tokens:
if token in ["+", "-", "*", "/"]:
y = int(stack.pop())
x = int(stack.pop())
if token == "+":
stack.append(x + y)
elif token == "-":
stack.append(x - y)
elif token == "*":
stack.append(x * y)
elif token == "/":
stack.append(x // y)
else:
stack.append(token)
return int(stack[0])
```
使用方法:
```
print(calculator("3 2 * 2")) # 输出 6
```
相关问题
用python的tkinter写一段计算器代码 数据要有圆周率 功能包括加减乘除 sin运算 cos运算 平方运算
好的,请参考以下代码,实现了一个简易的计算器,包括加减乘除、sin、cos、平方等运算,同时也有圆周率的数据:
```python
import tkinter as tk
import math
class Calculator:
def __init__(self, master):
self.master = master
master.title("Calculator")
# 创建输入框并放置
self.display = tk.Entry(master, width=30, justify='right', font=('Arial', 16))
self.display.grid(row=0, column=0, columnspan=4, padx=5, pady=5)
# 创建按钮并放置
buttons = [
['7', '8', '9', '/'],
['4', '5', '6', '*'],
['1', '2', '3', '-'],
['0', '.', 'pi', '+']
]
for row, button_row in enumerate(buttons, start=1):
for column, button_text in enumerate(button_row):
button = tk.Button(master, text=button_text, width=5, height=2)
button.grid(row=row, column=column, padx=5, pady=5)
button.bind('<Button-1>', self.button_click)
# 创建特殊功能按钮并放置
sin_button = tk.Button(master, text='sin', width=5, height=2)
sin_button.grid(row=5, column=0, padx=5, pady=5)
sin_button.bind('<Button-1>', self.sin_click)
cos_button = tk.Button(master, text='cos', width=5, height=2)
cos_button.grid(row=5, column=1, padx=5, pady=5)
cos_button.bind('<Button-1>', self.cos_click)
square_button = tk.Button(master, text='x^2', width=5, height=2)
square_button.grid(row=5, column=2, padx=5, pady=5)
square_button.bind('<Button-1>', self.square_click)
equal_button = tk.Button(master, text='=', width=5, height=2)
equal_button.grid(row=5, column=3, padx=5, pady=5)
equal_button.bind('<Button-1>', self.equal_click)
# 按钮点击事件
def button_click(self, event):
button_text = event.widget['text']
if button_text == 'pi':
self.display.insert(tk.END, str(math.pi))
else:
self.display.insert(tk.END, button_text)
# sin按钮点击事件
def sin_click(self, event):
try:
self.display.delete(0, tk.END)
self.display.insert(tk.END, str(math.sin(float(self.display.get()))))
except ValueError:
pass
# cos按钮点击事件
def cos_click(self, event):
try:
self.display.delete(0, tk.END)
self.display.insert(tk.END, str(math.cos(float(self.display.get()))))
except ValueError:
pass
# 平方按钮点击事件
def square_click(self, event):
try:
self.display.delete(0, tk.END)
self.display.insert(tk.END, str(float(self.display.get()) ** 2))
except ValueError:
pass
# 等于按钮点击事件
def equal_click(self, event):
try:
result = eval(self.display.get())
self.display.delete(0, tk.END)
self.display.insert(tk.END, str(result))
except (ValueError, SyntaxError):
pass
# 创建主窗口并运行
root = tk.Tk()
calc = Calculator(root)
root.mainloop()
```
注:代码中的 eval 函数可以将字符串转换为可执行的表达式,并返回表达式的结果。但是 eval 函数有一定的安全风险,因此在实际开发中应该谨慎使用。
请用Python3编写一个计算器的控制台程序,支持加减乘除、乘方、括号、小数点,运算符优先级为括号>乘方>乘除>加减,同级别运算按照从左向右的顺序计算。
好的,我可以为您编写一个计算器的控制台程序。以下是代码:
```python
import math
# 定义函数用于计算乘方
def power(base, exponent):
return math.pow(base, exponent)
# 定义函数用于计算乘除法
def multiply_divide(expression):
# 先计算乘除法
while '*' in expression or '/' in expression:
for i in range(len(expression)):
if expression[i] == '*':
result = float(expression[i-1]) * float(expression[i+1])
expression[i-1:i+2] = [str(result)]
break
elif expression[i] == '/':
result = float(expression[i-1]) / float(expression[i+1])
expression[i-1:i+2] = [str(result)]
break
return expression
# 定义函数用于计算加减法
def add_subtract(expression):
# 再计算加减法
while '+' in expression or '-' in expression:
for i in range(len(expression)):
if expression[i] == '+':
result = float(expression[i-1]) + float(expression[i+1])
expression[i-1:i+2] = [str(result)]
break
elif expression[i] == '-':
result = float(expression[i-1]) - float(expression[i+1])
expression[i-1:i+2] = [str(result)]
break
return expression
# 定义函数用于计算整个表达式
def calculate(expression):
# 先找出所有的括号,逐层计算
while '(' in expression:
start_index = expression.index('(')
end_index = start_index + 1
count = 1
while count > 0:
if expression[end_index] == '(':
count += 1
elif expression[end_index] == ')':
count -= 1
end_index += 1
result = calculate(expression[start_index+1:end_index-1])
expression[start_index:end_index] = [str(result)]
# 计算乘方、乘除、加减
expression = multiply_divide(expression)
expression = add_subtract(expression)
# 最终结果为表达式中唯一的一个数
return float(expression[0])
# 循环读取用户输入
while True:
expression = input('请输入要计算的表达式(输入 q 退出):')
if expression == 'q':
break
# 将字符串转换为列表,方便处理
expression_list = expression.replace(' ', '').replace('(', '( ').replace(')', ' )').split()
# 处理负号
for i in range(len(expression_list)):
if expression_list[i] == '-' and (i == 0 or expression_list[i-1] in ['(', '+', '-', '*', '/', '**']):
expression_list[i+1] = '-' + expression_list[i+1]
expression_list[i] = ''
# 计算表达式
result = calculate(expression_list)
print('计算结果为:', result)
```
示例运行结果:
```
请输入要计算的表达式(输入 q 退出):2+3*(5-1)-7/2
计算结果为: 16.5
请输入要计算的表达式(输入 q 退出):3**2+4*(2-1/(1+1))+2
计算结果为: 13.0
请输入要计算的表达式(输入 q 退出):-2*3+4/-2
计算结果为: -7.0
请输入要计算的表达式(输入 q 退出):q
```