笔试题目:从主字符串中去掉从字符串

笔试题目:从主字符串中去掉从字符串

文章目录

    • 笔试题目:从主字符串中去掉从字符串
    • 0.前言
    • 1.代码如下

0.前言

考试题目如下:
例:

a:5,b:5,c:2@a:2,c:1

得到

a:3,b:5,c:1

例:

a:9,b:2,c:2@

得到

a:9,b:2,c:2@

1.代码如下

# coding=utf-8
import sys
import collections

def read_str():
    # 测试使用
    #test_str = 'a:5,b:5,c:2@a:2'
    test_str = (sys.stdin.readline())
    # print((test_str))  # 测试使用
    return test_str

def split_str(test_str):
    # 拆分得到前后两部分字符串
    before_str = (test_str.split('@')[0])
    after_str = (test_str.split('@')[1])
    if after_str == None or  after_str == '\n':
        print(test_str)
        sys.exit()
    return before_str, after_str

def deal_with_str(object_str):
    # 根据得到字符串转化为对应的字典类型
    str_list = object_str.split(',')
    Alphabet_str = []
    number_str = []
    for temp_list in str_list:
        Alphabet_str.append(temp_list[0])
        number_str.append(int(temp_list[2]))
    # 生成有序的字典,方便后续按照顺序输出
    str_dict = collections.OrderedDict(zip(Alphabet_str, number_str))
    return str_dict

def handle_total_str(before_str, after_str):
    # 处理前字符串
    before_dict = deal_with_str(before_str)
    # 处理后字符串
    after_dict = deal_with_str(after_str)

    # 后面字典元素中的键在后面字典元素的键中,就减掉键对应的个数
    middle_temp_str = ''
    for middle_temp_str in after_dict.keys():
        if middle_temp_str in before_dict.keys():
            before_dict[middle_temp_str] = int(before_dict[middle_temp_str]) - int(after_dict[middle_temp_str])
    return before_dict  # 返回字典类型的结果


def print_str(result_dict):
    # 分别取出
    mid_keys = (list(result_dict.keys()))
    mid_values = (list(result_dict.values()))
    for test_queue in range(len(mid_keys)):
        # 注意最后一个
        if test_queue == len(mid_keys) - 1 :
            result_str = mid_keys[test_queue] + ':' + str(mid_values[test_queue])
            print(result_str,end="\n") # 因为最后一个会多一个,
        else:
            # 注意键值对的输出方式,不要换行
            result_str = mid_keys[test_queue] + ':' + str(mid_values[test_queue])
            print(result_str, end=",")

if __name__ == "__main__":
    # 1.读取字符串
    test_str = read_str()
    # 2.拆分字符串
    before_str , after_str = split_str(test_str)
    # 3.处理前后字符串
    result_dict = handle_total_str(before_str, after_str)
    # 4.得出结果并打印
    print_str(result_dict)


你可能感兴趣的:(笔试题目:从主字符串中去掉从字符串)