华为OD机试-仿LISP运算

news2024/11/24 20:13:15

 题目描述

代码实现

# coding:utf-8
# 仿LISP运算
# https://www.nowcoder.com/discuss/360006188531032064?sourceSSR=search
import sys

try:
    while True:
        line = sys.stdin.readline().replace('(', '( ').replace(')', ' )').strip().split(' ')
        if line == '':
            break
        stack = []
        op = []
        error_flag = False


        def cal(operation, p1, p2):
            res = 0
            if operation == 'add':
                res = p1 + p2
            if operation == 'sub':
                res = p1 - p2
            if operation == 'mul':
                res = p1 * p2
            if operation == 'div':
                if p2 == 0:
                    global error_flag
                    error_flag = True
                else:
                    res = p1 // p2
            return res


        for i in range(len(line)):
            if line[i] == '(':
                stack.append(line[i])
            elif line[i] == ')':
                if not stack:
                    error_flag = True
                    break
                stack.pop()
                p2 = int(op.pop())
                p1 = int(op.pop())
                operation = op.pop()
                res = cal(operation, p1, p2)
                op.append(res)
            else:
                op.append(line[i])
            if error_flag:
                break
        if error_flag:
            print("error")
        else:
            print(res)

except:
    print('error')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1020619.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HCIE-容器docker

1、安装配置操作系统,使用CentOS stream 8镜像 之前:RHEL 8.4 发布了,CentOS紧随其后,发布CentOS 8.4 之后:CentOS 走在前面,成为RHEL上游,再去发布RHEL 制作模板,模板配置要求&…

three.js——GUI的使用

GUI的使用 效果图1、导入gui2、创建一个GUI对象3、通过gui调用方法 name:按钮的名称 效果图 1、导入gui // 导入ligui import { GUI } from three/examples/jsm/libs/lil-gui.module.min.js2、创建一个GUI对象 const gui new GUI()3、通过gui调用方法 name:按钮的名称 // 创…

Cpp/Qt-day020918Qt

目录 完善登录框 点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两…

React 像 vue 一样配置页面路由,并支持重定向路由,路由守卫等(使用 useRoutes 完成)

希望达到跟 vue 一样,在 js 配置中则完成路由重定向的等基础操作,不太习惯使用 Routes、Route 等互相包裹的方式。 所有基于 react-router-dom6.15.0 封装了一个路由组件,并附带展示个路由守卫组件。 路由组件 - ExRouter.tsx:&…

金属热处理 术语

声明 本文是学习GB-T 7232-2023 金属热处理 术语. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件界定了金属热处理基础、热处理工艺、组织与性能和热处理装备的主要术语及其定义。 本文件适用于金属热处理相关技术标准及技术文件。 …

vscode 代码片段,快捷注释

一、Ctrl shift p 输入 snippets 配置代码片段 二、可以新建全局片段, 也可以配置现有的。 三、插入代码片段配置 { // api: 提供给第三方使用的接口 // author: 标明作者 // param: 参数 // return: 返回值 // todo: 待办 // version: 版本号 // inheritdoc: …

线性代数与编程语言结合 基础

什么是线性代数 线性代数是数学的一个分支,研究向量空间和线性变换的理论与方法。它涉及了向量、矩阵、线性方程组、线性映射等概念与运算规则。线性代数在科学和工程领域中被广泛应用,如物理学、计算机图形学、统计学、电子工程等。它提供了一种强大的…

艾奇软件怎么下载安装?

艾奇视频电子相册制作软件是免费的电子相册制作软件,照片配上音乐加上炫酷的过渡效果点缀图片和文字说明,轻松制作成各种视频格式的电子相册。 现在很多人尝试制作电子相册来记录美好瞬间,不论是婚礼邀请函,商业宣传,…

SpringCloud——微服务

微服务技术栈 在之前的开发过程中,我们将所有的服务都部署在一台服务器中,当我们的服务开始越来越多,业务越来越复杂,当一台服务器不能承担我们的业务的时候,就需要将不同的业务分开部署在不同的服务器上,…

leetcode725. 分隔链表(java)

分隔链表 题目描述拆分链表代码演示 题目描述 给你一个头结点为 head 的单链表和一个整数 k ,请你设计一个算法将链表分隔为 k 个连续的部分。 每部分的长度应该尽可能的相等:任意两部分的长度差距不能超过 1 。这可能会导致有些部分为 null 。 这 k 个部…

C【操作符】

1. 操作符分类: 2. 算术操作符 int main() {double a 5 % 2;//商2余1printf("a %lf\n", a);return 0; } 3. 移位操作符 3.1 左移操作符 左边抛弃、右边补0 3.2 右移操作符 首先右移运算分两种: 1. 逻辑移位 左边用0填充,右边丢…

5.4 转换数据

5.4 转换数据 5.4.1 哑变量处理类别型数据5.4.2 离散化连续型数据1、等宽法2、等频法3、聚类分析法 数据集 E:/Input/ptest.csv 5.4.1 哑变量处理类别型数据 数据分析模型中有相当一部分的算法模型都要求输入的特征为数值型,但实际数据中特征的类型不一定只有数值…

【C++基于多设计模式下的同步异步日志系统】

文章目录 [toc] 1 :peach:项目介绍:peach:2 :peach:开发环境:peach:3 :peach:核心技术:peach:4 :peach:环境搭建:peach:5 :peach:日志系统介绍:peach:5.1 :apple:为什么需要日志系统?:apple:5.2 :apple:日志系统技术实现:apple:5.2.1 :lemon:同步写日志:lemon:5.2.2…

如何在公网远程访问内网的jupyter notebook,随时随地都能跑代码!

文章目录 前言1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 前言 Jupyter Notebook,它是一个交互式的数据科学和计算环境,支持多种编程语言,如…

Ruoyi-vue项目讲解

[TOC]若依前后端调用接口解读 若依github官方下载地址 若依gitee官方下载地址 1.验证码时候的前端调用接口 调用前端登录界面的时候,调用的是login.vue这个文件中的created函数 这里我们查看getCode函数方法 可以看到,这里先调用了一个getCodeImg函数…

ChatGLM Pytorch从0编写Transformer算法

预备工作 # !pip install http://download.pytorch.org/whl/cu80/torch-0.3.0.post4-cp36-cp36m-linux_x86_64.whl numpy matplotlib spacy torchtext seaborn import numpy as np import torch import torch.nn as nn import torch.nn.functional as F import math, copy, tim…

八股整理(计网,os)

1.进程和线程的区别 1.1什么是进程和线程 1.进程是操作系统进行资源分配和调度的一个基本单位,资源包括cpu,内存,磁盘等等IO设备等等。每一个进程启动都会最先产生一个线程,即主线程,然后主线程会在创建其他的子线程…

深入理解WPF中MVVM的设计思想

近些年来,随着WPF在生产,制造,工业控制等领域应用越来越广发,很多企业对WPF开发的需求也逐渐增多,使得很多人看到潜在机会,不断从Web,WinForm开发转向了WPF开发,但是WPF开发也有很多…

【Redis缓存:常见问题及解决方案】

目录 ①缓存雪崩 常见的解决方案 加锁排队 随机化过期时间 设置⼆级缓存 ②缓存穿透 常见的解决方案 布隆过滤器 缓存空结果 接口层增加校验 ③缓存击穿 常见的解决方案 加锁排队 设置热点数据永远不过期 分布式缓存系统 ④缓存预热 缓存预热的实现思路 ①缓…

C语言开发手册,辅助工具

方便查函数,头文件,日常语法,c99与c11的差异,等 https://www.php.cn/manual/view/34866.html