华为笔试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 北京

相关推荐

07-14 13:47
门头沟学院 Java
Lynn012:你评估好自己的位置了吗《顶尖应届》
投递小米集团等公司7个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 11:45
你不要过来啊啊啊啊啊啊啊
码农索隆:对面:“今天你不面也得面”
点赞 评论 收藏
分享
机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
5
13
分享

创作者周榜

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