Использование глобальной переменной в качестве счетчика в двойном цикле в python - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь использовать глобальную переменную x как счетчик в моих циклах for. Я использую точки, координаты которых сохранены в переменных col_values_X_right и col_values_Y_right - списках координат. Я пытаюсь использовать их для создания 15 различных графиков, потому что в каждом списке координат есть разделители '-', которые указывают начало новой главы данных (которая была получена из другого источника). Это просто объяснение, для чего я хочу использовать этот код. Проблема, как я уже говорил, в том, что я не могу использовать свою переменную глобального счетчика в циклах. Я пытаюсь использовать global x, но я не очень понимаю, как это должно работать. Когда я пытаюсь запустить этот код, он показывает эту ошибку SyntaxError: name 'x' is assigned to before global declaration. Пожалуйста, помогите мне, как я могу это исправить и использовать переменную x среди всех циклов

x = 0

for j in range(number_of_separatores//2):
    image_plot1 = plt.imshow(image1)
    global x
    for i in range(len(col_values_X_right)-x):
        if stimulus_name[x+1] == '5_01.jpg' and col_values_X_right[x+1] != '-':
                plt.scatter([col_values_X_right[x+1]], [col_values_Y_right[x+1]])
                x += 1
        else:
            break
plt.show()

Мои дополнения к вопросу:

x = 0 # the variable, that I want to use as a counter in my cycles 
a = 15
image = mpl.image.imread('file_name.png')
X = list() #put your float numbers here
Y = list() #and here

for j in range(a): #first cycle for making new plots 
    image_plot = plt.imshow(image) #the image on that I want to make my plot
    for i in range(len(X)): #columns of all coordinate that I will separate for differents plots by '-' symbol in it
        if X[x+1] != '-':
            plt.scatter([X[x+1], Y[x+1]) #one point on the plot, the length of X and Y is similar 
            x+=1 #for use next cell of the column on the next iteration of the cycle
        else:
            break #if I find the '-' symbol in column I want to end this plot end start next one. And here is a problem: I want to start from the last x cell, but if I ran this code, after first plot the x value reset and code plotting similar picture 


plt.show() 

1 Ответ

0 голосов
/ 02 мая 2020

Я не совсем уверен, чего вы пытаетесь достичь, но это может сработать. Посмотрите на этот ответ

x = 0 #Global

def foo():
    global x
    for j in range(10):
        for i in range(10 - x):
            #Do your own thing here
            if j % 2 == 0:
                x += 1
            else:
                break
    print("Inside: ", x)

def main():
    print("Before", x)
    foo()
    print("After", x)    

main()

...