使用某些条件刷新变量



当我尝试刷新列表时,我不理解Python的特定行为。我试图弄清楚,因为我陷入了一个小项目。

以下是代码(这不是项目的代码,只是向您展示问题的代码(:

import time
time_1 = [1,2,3,4,5]
time_change = time_1
def test():
global time_change
time_change.remove(1)
print(time_change)

time.sleep(10)

time_change = time_1

print(time_change)
# What I would like to have is time_change = time_1
test()
# -*- coding: utf-8 -*-
# Les imports
import time
import random
# ===========================================================
# Déclarations des variables globales.
event_type_architecture = " Le secteur de l'architecture. "
event_type_graphisme = " Le secteur du graphisme. "
event_type_developper = " Le secteur du développement. "
event_type_garage = " Le secteur de l'automobile. "
event_type_charpentier = " Le secteur de la charpentrie. "
event_type_avocat = " Le secteur des avocats. "
event_type_medecin = " Le secteur des médecins "
# event_nb_secteurs HERE !
event_tt = [random.randint(1,6)]
event_nb_secteurs = list(event_tt)
types_secteurs = [event_type_architecture , event_type_developper , event_type_graphisme
, event_type_garage , event_type_charpentier, event_type_avocat , event_type_medecin ]
types_secteurs_change = list(types_secteurs)
event_types_secteurs = random.choice(types_secteurs_change)
# ===========================================================
# different events

def event_crise_economique():   
print(" n Une crise économique sévira dans " + str(event_nb_secteurs) +
# I want event_nb_secteurs to go to his initial value which is random.randint(1,6) but doesn't work always print same event_nb_secteurs number.
" secteurs qui sont....n")
print(event_nb_secteurs)
time.sleep(5)
event_types()

def event_coupure_electricite():
print(" n Une coupure de courant va arriver dans " + str(event_nb_secteurs) +
" secteurs qui sont.... n")
time.sleep(5)
event_types()
def event_types():
global types_secteurs_change
global event_nb_secteurs
if event_nb_secteurs == 0 : 
quit
for ev_types in range(event_nb_secteurs[0]) :
event_types_secteurs = random.choice(types_secteurs)
if event_types_secteurs in types_secteurs_change :
print(event_types_secteurs)
types_secteurs_change.remove(event_types_secteurs)
event_nb_secteurs = list(event_tt)
types_secteurs_change = list(types_secteurs)

# Le vrai event :    
def event ():  
random_event = False
nb_hasard = random.randint(9,11)
if nb_hasard >= 9 :
print("n Oh non ! un évènement va arriver !")
event_random = random.randint(1,4)
if event_random == 1 :
event_coupure_electricite()
elif event_random == 2 :
event_crise_economique()
else : 
print("C bon y a r")

for i in range(10):
event()

正如我所说,你只需要关注event_nb_secteurs,这就是问题所在。我希望它的初始值是:random.randint(1.6(但它不起作用

通过执行time_change = time_1,变量time_change指向time_1指向的同一列表,这只是一个别名,您主要想将其复制为

time_1 = [1, 2, 3, 4, 5]
time_change = list(time_1)
def test():                    # no need to pause the code, it runs the same without
global time_change
time_change.remove(1)
print(time_change)
time_change = list(time_1)
print(time_change)
>> test()
[2, 3, 4, 5]
[1, 2, 3, 4, 5]

最新更新