筆試題目:從主字符串中去掉從字符串

筆試題目:從主字符串中去掉從字符串

0.前言

考試題目如下:
例:

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

得到

a3,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)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章