华为第三题

if __name__ == '__main__':
    functions, present, x = input().strip().split(';')
    present_dict = dict()
    present = present.split(',')
    visited = set()
    for p in present:
        key, val = p.split('=')
        present_dict[key] = val
        try:
            int(val)
            visited.add(key)
        except:
            pass
    functions = functions.split(',')
    func_dict = dict()
    #  所有表达式
    for f in functions:
        key, val = f.split('=')
        for pk, pv in present_dict.items():
            val = val.replace(pk, pv)
        val = val.replace('{', '')
        val = val.replace('}', '')
        try:
            func_dict[key] = str(int(eval(val)))
            visited.add(key)
        except:
            func_dict[key] = val
    # 所有表达式都替换为数字
    while len(visited) < len(func_dict) + len(present_dict):
        for key, val in func_dict.items():
            if key not in visited:
                for fk, fv in func_dict.items():
                    val = val.replace(fk, fv)
                for pk, pv in present_dict.items():
                    val = val.replace(pk, pv)
                val = val.replace('{', '')
                val = val.replace('}', '')
                try:
                    func_dict[key] = str(int(eval(val)))
                    visited.add(key)
                except:
                    func_dict[key] = val
        for key, val in present_dict.items():
            if key not in visited:
                for fk, fv in present_dict.items():
                    val = val.replace(fk, fv)
                for pk, pv in present_dict.items():
                    val = val.replace(pk, pv)
                val = val.replace('{', '')
                val = val.replace('}', '')
                try:
                    present_dict[key] = str(int(eval(val)))
                    visited.add(key)
                except:
                    present_dict[key] = val


    # 所求表达式替换
    for pk, pv in present_dict.items():
        x = x.replace(pk, pv)
    for fk, fv in func_dict.items():
        x = x.replace(fk, fv)
    x = x.replace('{', '')
    x = x.replace('}', '')
    print(eval(x))

再求一个第二题ac的答案哇~~

#华为##笔试题目#
全部评论
if __name__ == "__main__":     bd, id, res = input().split(';')     ids = id.split(',')          for id in ids:         a,b = id.split('=')         bd = bd.replace(a,b)     bds = bd.replace('{','').replace('}','').split(',')     temp_dict = dict([ bd.split('=') for bd in bds])     s = temp_dict[res]     temp_dict.pop(res)     for k,v in temp_dict.items():         s = s.replace(k, '('+v+')')     print(int(eval(s)))
点赞 回复 分享
发布于 2019-09-07 21:25
第二题,求个AC啊
点赞 回复 分享
发布于 2019-09-07 21:17

相关推荐

02-28 13:25
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
三分入剑:我觉得还是学历问题 如果你真的想要进大厂不想在小厂的话读个211得研究生吧 我感觉简历还没你好呢 我都实习了俩月了 我投了一百多份能投出20多份简历 能面试六七次 我们部门只招研究生了都 现在连9本都很难找到像样的大厂了 你又没打过rm这种 我觉得想要进步的话就考个研究生吧
点赞 评论 收藏
分享
评论
点赞
5
分享

创作者周榜

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