Как обратно получить значение из функции в Python?

Рейтинг: 0Ответов: 1Опубликовано: 12.05.2023

У меня в функции много переменных, и мне нужно вытащить одну из них в основной код.

def code(q_f_code):
    correct=0
    q_f_code2=q_f_code
    while q_f_code!=0:
        x=randint(1,123)
        y=randint(1,123)
        z=int(input())
        if x**y==z:
            correct=+1
            q_f_code=q_f_code-1
        else:
            correct=-1
            q_f_code=q_f_code-1
    print('у тебя {:} из {:} правильных ответов'.format(correct, q_f_code2))
code(q_f_code=int(input('Введите количество вопросов, которое хотите получить: ')))

Мне нужно вывести переменную "correct", но и функция должна работать. Я хочу использовать функцию "correct" в следущей функции, которую напишую

Ответы

▲ 0Принят

Можно переменную correct сделать глобальной

from random import randint


def code(q_f_code):
    
    global correct

    
    correct = 0
    q_f_code2 = q_f_code
    
    while q_f_code != 0:
        
        x = randint(1,123)
        y = randint(1,123)
        z = int(input())
        
        if x**y == z:
            correct += 1
            #q_f_code = q_f_code - 1
            
        else:
            correct -= 1
            #q_f_code = q_f_code - 1
            
        q_f_code = q_f_code - 1

    print('у тебя {:} из {:} правильных ответов'.format(correct, q_f_code2))

code(q_f_code=int(input('Введите количество вопросов, которое хотите получить: ')))


#Проверка выводом
print(correct)

Но более правильно будет если функция будет возвращать эту переменную:

from random import randint


def code(q_f_code):
    
    correct = 0
    q_f_code2 = q_f_code
    
    while q_f_code != 0:
        
        x = randint(1,123)
        y = randint(1,123)
        z = int(input())
        
        if x**y == z:
            correct += 1
            #q_f_code = q_f_code - 1
            
        else:
            correct -= 1
            #q_f_code = q_f_code - 1
            
        q_f_code = q_f_code - 1

    print('у тебя {:} из {:} правильных ответов'.format(correct, q_f_code2))

    return correct #Возвращаем локальную версию correct



#|
#V   это глобальная версия, названия необязательно должны совпадать
correct = code(q_f_code = int(input('Введите количество вопросов, которое хотите получить: ')))


#Проверка выводом
print(correct)

То что функция теперь возвращает переменную никак не влияет на её работу

Соблюдайте PEP8 и не забывайте ставить пустые строки что бы читать можно было