#python #simulation
#python #Симуляция
Вопрос:
Я запускаю моделирование для концерта, в котором я генерирую количество времени, которое каждый фанат проводит перед сценой, прежде чем отправиться делать что-то еще (купить еду, напитки или сходить в туалет). Однако время, которое я установил для них, не является временем, которое используется в обратном отсчете, пока они не уйдут, чтобы сделать что-то еще.
При выполнении обратного отсчета я получил сообщение об ошибке, в котором говорилось, что я не могу использовать операнд =
для NoneType и int, и после изменения способа назначения времени пребывания я понял, что многие времена пребывания были изменены.
Fan
код класса
class Fan:
stay = 0
def __init__(self, gender):
self.gender = gender
Этот код создает веер, вычисляет, как долго они будут оставаться перед сценой, и добавляет их в область перед сценой
for i in range(200):
x = random.randint(1,10)
if x <= 7:
f = Fan("f")
f.stay = stage.calcstay()
stage.addfan(f)
print(i,": ",f.stay)
else:
f = Fan("m")
f.stay = stage.calcstay()
stage.addfan(f)
print(i,": ",f.stay)
Здесь находится функция для обратного отсчета времени, в течение которого фанаты остаются перед сценой. (буквально следующий бит кода)
for x in range(360):
stagefunction()
Это stagefunction()
метод:
def stagefunction():
if len(stage.fans) > 0:
for i in range(len(stage.fans)):
print(i,": ",stage.fans[i].stay)
stage.fans[i].stay = -1
if stage.fans[i].stay <= 0:
movefromstage(i)
stage.TTS = 1
return
Я ожидал, что stagefunction()
будет вызываться несколько раз, каждый раз уменьшая количество времени, оставшееся до каждого вентилятора в передней части сцены, на 1 и удаляя тех, кто больше не должен оставаться. Однако я даже не могу пройти stagefunction()
даже один раз, потому что время пребывания меняется, и обычно в начале 190-х годов значение изменяется на NoneType
Комментарии:
1. можете ли вы показать свой
Fan
код класса?2. Это требует минимального, полного и поддающегося проверке примера.
3. @alec935 Я добавил это
4. @OmariLawrence Спасибо тебе! Я добавил ответ.
Ответ №1:
stay
является class variable
, а не instance variable
. Это означает, что значение stay
является универсальным для всех экземпляров класса, и если вы хотите его изменить, вы должны изменить его из класса, а не экземпляра.
Чтобы определить instance variable
, поместите его в свою __init__()
функцию