tarea de Python
#?Importar módulo aleatorio
importar?random
#?Definir una clase para la silla humana
clase ?ManAndBench :
def?__init__(self,?n_bench):
self.bench_num?=?n_bench
#?Ordene los números de asientos ocupados
self.break_point?=?[]
def?print_bench(self):
#?Defina la matriz totalmente 0 como banco
pt_str?=?[0?for?_?in?range(self.bench_num)]
#?Reescribe el número del banco de trabajo según el número de tareas ocupadas
for? i,?item?in?enumerate(self.break_point):
#?El primer [como número] del banco se asigna a la i+1ª persona
pt_str[item ]=?i+1
brk_num?=?len(self.break_point)
if?brk_num?==?0:
imprimir ("El banco está vacío:",?pt_str)
else:
print("{:2d} man: ? {}".format(brk_num,?pt_str))
def?next_man(self):
#?Si es la primera persona, usa ocupación aleatoria
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)
#?Genere una matriz todo cero, que contiene el número de asientos ocupados + 1 recuento de longitud de posición vacía
block_size?=?[0 for _ in range(brk_num +?1)]
#?Calcular la longitud de cada posición vacía
tmp?=? 0
for?i?in?range(self.bench_num):
#?Si la posición i-ésima no está ocupada, agregue 1 a la matriz tmp
if ?i?not?in?self.break_point:
block_size[tmp]?+=?1
#? del siguiente intervalo
otro:
tmp?+=?1
#?Encuentre la longitud máxima y calcule el número de secuencia del bloque de longitud máxima
max_block? =?max(block_size)
max_index?=?block_size.index(max_block)
#?Calcular el punto de división del bloque de longitud máxima en todo el banco de trabajo
start?=?0
for?i?in?range(max_index):
start?+=?block_size[i]+ 1
self. break_point.append( start?+?max_block?//?2)
c?=?int(input("Ingrese el número de sillas: ") )
mientras?True:
m?=?int(i
nput("Ingrese el número de personas:"))
if?m?<=?c:
descanso
else:
print("El número de personas es mayor que el número de sillas, ¡vuelva a ingresar!")
#?Haga referencia a la clase definida
mab?=?ManAndBench (c)
#?Imprimir banco
mab.print_bench()
#?Imprimir una persona a la vez, un asiento a la vez
para?_?in?range( m):
mab.next_man()
mab.print_bench()
?