當前位置:編程學習大全網 - 編程語言 - python作業

python作業

#?Python3.6

#?導入random模塊

import?random

#?定義壹個人椅的類

class?ManAndBench:

def?__init__(self,?n_bench):

self.bench_num?=?n_bench

#?依次已經被占用的座位號

self.break_point?=?[]

def?print_bench(self):

#?定義全0數組作為長椅

pt_str?=?[0?for?_?in?range(self.bench_num)]

#?按照占用的作為號,重寫長椅數字

for?i,?item?in?enumerate(self.break_point):

#?長椅的第[作為號]賦值為第i+1個人

pt_str[item]?=?i+1

brk_num?=?len(self.break_point)

if?brk_num?==?0:

print("長椅為空:",?pt_str)

else:

print("{:2d}號男人:?{}".format(brk_num,?pt_str))

def?next_man(self):

#?如果是第壹個人,使用隨機占座

if?len(self.break_point)?==?0:

fst?=?random.randint(0,?self.bench_num?-?1)

self.break_point.append(fst)

else:

brk_num?=?len(self.break_point)

#?產生已經被占座的個數+1的全零數組,用於空的位置長度計數

block_size?=?[0?for?_?in?range(brk_num?+?1)]

#?統計每個空位置的長度

tmp?=?0

for?i?in?range(self.bench_num):

#?如果第i個作為沒有被占用,則第tmp個數組加1

if?i?not?in?self.break_point:

block_size[tmp]?+=?1

#?否則,tmp加1,統計下壹個間隔段的長度

else:

tmp?+=?1

#?找出最大長度,計算最大長度塊的序號

max_block?=?max(block_size)

max_index?=?block_size.index(max_block)

#?計算最大長度塊在整個長椅中的分割點

start?=?0

for?i?in?range(max_index):

start?+=?block_size[i]+1

self.break_point.append(start?+?max_block?//?2)

c?=?int(input("請輸入椅子的數量:"))

while?True:

m?=?int(input("請輸入人的數量:"))

if?m?<=?c:

break

else:

print("人數量大於椅子數量,請重新輸入!")

#?引用定義的類

mab?=?ManAndBench(c)

#?打印長椅

mab.print_bench()

#?每次坐壹個人,打印壹次

for?_?in?range(m):

mab.next_man()

mab.print_bench()

  • 上一篇:水鉆打孔機怎麽使用
  • 下一篇:軒轅劍天之痕攻略
  • copyright 2024編程學習大全網