首页 > 编程语言 >L2-033 简单计算器(Python)

L2-033 简单计算器(Python)

时间:2024-03-13 17:59:44浏览次数:18  
标签:arr temp Python 运算符 堆栈 L2 x2 033 x1

作者 陈越

单位 浙江大学

cal.jpg

本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。如上图所示,计算器由两个堆栈组成,一个堆栈 S1​ 存放数字,另一个堆栈 S2​ 存放运算符。计算器的最下方有一个等号键,每次按下这个键,计算器就执行以下操作:

  1. 从 S1​ 中弹出两个数字,顺序为 n1​ 和 n2​;
  2. 从 S2​ 中弹出一个运算符 op;
  3. 执行计算 n2​ op n1​;
  4. 将得到的结果压回 S1​。

直到两个堆栈都为空时,计算结束,最后的结果将显示在屏幕上。

输入格式:

输入首先在第一行给出正整数 N(1<N≤103),为 S1​ 中数字的个数。

第二行给出 N 个绝对值不超过 100 的整数;第三行给出 N−1 个运算符 —— 这里仅考虑 +-*/ 这四种运算。一行中的数字和符号都以空格分隔。

输出格式:

将输入的数字和运算符按给定顺序分别压入堆栈 S1​ 和 S2​,将执行计算的最后结果输出。注意所有的计算都只取结果的整数部分。题目保证计算的中间和最后结果的绝对值都不超过 109。

如果执行除法时出现分母为零的非法操作,则在一行中输出:ERROR: X/0,其中 X 是当时的分子。然后结束程序。

输入样例 1:

5
40 5 8 3 2
/ * - +

输出样例 1:

2

输入样例 2:

5
2 5 8 4 4
* / - +

输出样例 2:

ERROR: 5/0
n = int(input())
arr = list(map(int,input().split()))
brr = input().split()
flag= 0
while len(arr) > 1:
    x1 = arr.pop(-1)
    x2 = arr.pop(-1)
    s = brr.pop(-1)
    temp = 0
    if s == '+':
        temp = x1+x2
    elif s == '-':
        temp = x2-x1
    elif s == '*':
        temp = x1*x2
    else:
        if x1 == 0:
            print(f"ERROR: {x2}/0")
            flag = 1
            break
        else:
            temp = x2//x1
    arr.append(temp)
if flag == 0:
    print(arr[0])

 

 

标签:arr,temp,Python,运算符,堆栈,L2,x2,033,x1
From: https://blog.csdn.net/2203_75357861/article/details/136674981

相关文章

  • Python 函数的参数传递 *args和 **kwargs
    知识点:在函数调用时,*会以单个元素的形式解包一个元祖,使其成为独立的参数。在函数调用时,**会以键/值对的形式解包一个字典,使其成为独立的关键字参数。 deff(a,*args):print(args)f(1,2,3,4)​```输出为:(2,3,4)​```虽然传入1,2,3,4,但是解包为(1),(2,3,4),其中a是1......
  • 【分享】记一次项目迁移(docker java | docker python)
    项目:前端Vue3,后端Python+Java,数据库Redis+MySQL原先部署在centos7里面的,使用的宝塔面板部署的,还算方便。但是服务器要到期了,要将项目迁移到另外一台服务器。另外一台服务器是opencloudos+1plane本来想构建一个jdk1.8+python3.12+Nodejs环境的镜像奈何本人没学过docker,操作起......
  • python面试题
    1、字符串最后一个单词的长度importsysstr=input()    //输入字符串strarr=str.split("")//以空格分割字符串并将结果存入数组arrn=len(arr)-1  //获取数组最后一个元素的索引print(len(arr[n])) //打印最后一个元素arr[n]的长度即为最后一个......
  • 【Python使用】嘿马头条完整开发md笔记第1篇:课程简介,ToutiaoWeb虚拟机使用说明【附代
    嘿马头条项目从到完整开发笔记总结完整教程(附代码资料)主要内容讲述:课程简介,ToutiaoWeb虚拟机使用说明,Pycharm远程开发,产品与开发,数据库1产品介绍,2原型图与UI图,3技术架构,4开发。OSS对象存储,七牛云存储,CDN,缓存。缓存,缓存架构,缓存数据,缓存有效期与淘汰策略,缓存模式缓存数据的......
  • Python简介与环境搭建
    文章目录前言简介Python环境搭建手动添加系统环境变量PyCharm安装创建一个项目安装汉化插件前言  本专栏用来记录个人学习Python的过程,也希望大家可以通过该专栏轻松入手Python。废话不多说,就让我们开始吧。简介  Python由荷兰国家数学与计算机科学研究中心......
  • Python爬虫之urllib
    urllib1.1urllib基本使用#使用urllib来访问百度首页的源码importurllib.request#1.定义一个url,就是你要访问的地址url='http://www.baidu.com'#2.模拟浏览器向服务器发送请求response=urllib.request.urlopen(url)#3.获取响应中的页面的源码content=r......
  • Python学习+PySimpleGUI+Pyinstaller,制作Windows桌面小工具
    1开发环境Python+PyCharm2第三方库2.1PySimpleGUI是基于Python的图形界面开发工具pipinstall PySimpleGUIPySimpleGUI5.0版本后开始收费,好像注册个人用户是免费,嫌麻烦我直接用的之前的版本 pip installPySimpleGUI==4.60.5 2.2PyInstaller是一个在Windows、G......
  • win11安装wsl2没有网络解决方法
    1、启用hyper-v2、打开hyper-v管理器-点击虚拟交换机管理器-先看下有无一个名为WSL(这个名字可以被修改,和下面对应就行)的虚拟交换机,有的话先设置为外部网络3、编辑%USERPROFILE%.wslconfig添加如下内容[wsl2]networkingMode=bridgedvmSwitch=WSLipv6=true12344、执行wsl-......
  • python多线程中:如何关闭线程?
    使用threading.Event对象关闭子线程Event机制工作原理:Event是线程间通信的一种方式。其作用相当于1个全局flag,主线程通过控制event对象状态,来协调子线程步调。使用方式主线程创建event对象,并将其做为参数传给子线程主线程可以用set()方法将event对象置为true,用cl......
  • 免费实名认证接口python语言-身份核验-身份证二、三要素
    翔云身份证实名认证接口,实时联网,可快速、精准核验用户所提供信息的真伪,且为更好的服务广大新老用户,现购买翔云身份证实名认证接口即赠送同等的身份证识别接口条数,旨在帮助用户摆脱手动录入的繁琐,提高用户体验,让您的平台远离冒名顶替、欺诈的风险,更有助于您的企业树立起诚信、可靠......