华为笔试9月20日100+100+90

机试前两题不难,第三题坑好多,最后也没AK

做了个比较简洁的实现,用python的locals()+eval(),其实可以很好处理加减乘除。

import sys
d = locals()
for line in sys.stdin:
    line = line.strip().replace("/", "//")
    if line.startswith("let"):
        try:
            name, expr = line[4:].split(" = ")
            # d[name] = eval(expr)
            l = expr.split()
            while len(l) > 2:
                x = eval(" ".join(l[:3]))
                l = [str(x)] + l[3:]
            if not name.isidentifier() or len(l) != 1:
                raise SyntaxError
            d[name] = int(l[0])
        except NameError:
            d[name] = "UNDEF"
        except:
            print("<syntax-error>")
    elif line.startswith("out"):
        name = line[4:-1]
        if not name.isidentifier():
            print("<syntax-error>")
        elif name not in d or d[name] == "UNDEF":
            print("<undefined>")
        elif d[name] < -2147483648:
            print("<underflow>")
        elif d[name] > 2147483647:
            print("<overflow>")
        else:
            print(d[name])
    else:
        print("<syntax-error>")

#华为#
全部评论
举办了哥,我才100+45+45
3 回复 分享
发布于 2023-09-20 22:15 北京
这代码写的真漂亮
2 回复 分享
发布于 2023-09-21 03:25 浙江
这代码太简洁了 大佬
点赞 回复 分享
发布于 2023-09-21 23:10 北京

相关推荐

09-26 19:45
门头沟学院 Java
点赞 评论 收藏
分享
迷茫的大四🐶:价格这么低都能满了?
点赞 评论 收藏
分享
今天 10:45
已编辑
门头沟学院 Java
昨天面美团,jvm,juc问的好深啊,感觉小林coding不太够喔,牛油们有没有什么推荐的八股网站嘛🕒&nbsp;岗位/面试时间👥&nbsp;面试题目🤔&nbsp;面试感受11.20更新初试已过,一直泡池子啊
明天不下雨了:小林Coding:https://xiaolincoding.com/ 全栈哥:https://www.pdai.tech/ Guide哥:https://javaguide.cn/ 秀哥:https://interviewguide.cn/ 沉默王二:https://javabetter.cn/home.html 磊哥:https://www.javacn.site/interview/basic/ 小傅哥:https://bugstack.cn/ 源码哥:https://doocs.github.io/source-code-hunter/#/ 各大厂的公众号技术文章和一些经典的书籍
面试太紧张了怎么办?
点赞 评论 收藏
分享
评论
5
13
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务