Program for House

Sort

Posted by Zz on April 2, 2022
just a simple program

Intro

买新房时不知如何选择,所以就自己写了个程序,用来根据不同要素进行打分排序,在选房时不再盲目焦虑。

import sys
import math

NUMBER = [11, 12, 15, 16, 42, 43, 54, 55, 56, 57, 58, 59, 64, 65]
NUM_TO_SCORE = {6:9, 7:1, 12:1, 17:1, 18:1, 19:1, 22:1}
TYPE_TO_SCORE = {"A1":10, "A2":10, "B1":8, "B2":8, "C1":6, "C2":6}
FLOOR = [x for x in range(1, 17)]
TYPE = ["A", "B", "C"]
WEIGHT = {"num_to_score":0.4, "floor_to_score":0.3, "type_to_score":0.3}


def get_score(info):
  score = 0
  for key in WEIGHT.keys():
    score += WEIGHT[key] * info[key]
  return score

def sort():
  info = {}
  info_list = []
  num_build = 0
  type_list = []
  FLOOR_TO_SCORE = {}
  for f in FLOOR:
    FLOOR_TO_SCORE[f] = 15 - abs(15 - f)
  for n in NUMBER:
    if n == 11 or n == 12:
      num_build = 7
      type_list = ["B1", "A2", "A1", "B2"]
    if n == 15 or n == 16:
      num_build = 6
      type_list = ["B1", "A2", "A1", "B2"]
    if n == 42 or n == 43:
      num_build = 12
      type_list = ["B1", "C2", "A1", "B2"]
    if n == 54 or n == 55:
      num_build = 17
      type_list = ["A1", "B2", "B1", "A2"]
    if n == 56 or n == 57:
      num_build = 18
      type_list = ["A1", "B2", "B1", "A2"]
    if n == 58 or n == 59:
      num_build = 19
      type_list = ["A1", "B2", "B1", "A2"]
    if n == 64 or n == 65:
      num_build = 22
      type_list = ["A1", "B2", "B1", "C2"]

    for f in FLOOR:
      for t in type_list:
        info["number"] = n
        info["type"] = t
        info["floor"] = f
        info["num_to_score"] = NUM_TO_SCORE[num_build]
        info["floor_to_score"] = FLOOR_TO_SCORE[f]
        info["type_to_score"] = TYPE_TO_SCORE[t]
        info["score"] = get_score(info)
        info_list.append(info)
  info_list = sorted(info_list, key = lambda s:s["score"])
  return info_list


if __name__ == '__main__':
  info_list = sort()
  print(info_list)