#coding:utf-8 import sys import argparse def main(args): space = args.l_box_width m_box_w = sorted(args.m_box_width) assert len(m_box_w) == args.num_m_box, '入力した幅の数[{0}], 入力値[{1}]'.format(len(m_box_w), args.num_m_box) count = cal_space(space, m_box_w) print("大きい箱の幅:", args.l_box_width) print("小さい箱の数:",len(m_box_w)) print("小さい箱の幅:",m_box_w) print("入る箱の数:",count) def cal_space(space, m_box_w): ret = 0 for w in m_box_w: space -= w if space < 0: break ret += 1 return ret if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--l_box_width", default=15, type=int) parser.add_argument("--num_m_box", default=6, type=int) parser.add_argument("--m_box_width", type=int, nargs='+') args = parser.parse_args() main(args) # 実行例 # python num_5_block_of_number.py --l_box_width 15 --num_m_box 6 --m_box_width 1 1 2 3 4 5 # 出力結果↓ # 大きい箱の幅: 15 # 小さい箱の数: 6 # 小さい箱の幅: [1, 1, 2, 3, 4, 5] # 入る箱の数: 5 # 失敗例 # python num_5_block_of_number.py --l_box_width 15 --num_m_box 6 --m_box_width 1 1 2 3 4 # 出力結果↓ # AssertionError: 入力した幅の数[5], 入力値[6]