Как несколько раз использовать данные из функции в качестве аргументов другой функции?

Nika

Новичок
Пользователь
Ноя 1, 2021
7
0
1
Здравствуйте! Моя задача состоит в том, чтобы реализовать линейный конгруэнтный ГПСЧ ( генерация псевдослучайных чисел )при n=24 (то есть m=2 в степени 24). Сам метод мне понятен.

Но обязательным условием задания является реализация двух возможностей для пользователя :
1. Получать последовательность постепенно, по одному элементу
2. Получать ту же самую последовательность сразу целиком

Входные данные для всех выводов должны быть одинаковыми, но с возможностью изменения для генерации другой последовательности (при перезапуске программы). Результаты 1. и 2. взаимодействий нужно иметь возможность зрительно сравнить для одной последовательности.

При этом должно быть реализовано две функции: генерирующая (назовем её f1) , она задаёт значения переменным a, b, c, m; вторая - функция метода ГПСЧ (f2) должна выполнять генерацию элементов последовательности с помощью формулы, которая содержит a,b,c,m, значения которым задала функция f1.

Я планирую реализовать f1, а действия f2 разделить на две f2.1 (для генерации последовательности поэлементно) и f2.2 (для генерации последовательности целиком ).

Т.е. мне нужно один раз сгенерировать входные данные, а затем работать с ними, пока пользователю не понадобится другая последовательность с другими исходными данными. Я не понимаю, как сделать так, чтобы f2.1 можно было вызвать несколько раз, сколько нужно пользователю, но при этом сохранить данные, сформированные в f1.

Подскажите, пожалуйста, как правильно реализовать взаимодействие пользователя с программой, чтобы все условия задания соблюдались?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 580
457
83
если я правильно понял
Входные данные для всех выводов должны быть одинаковыми, но с возможностью изменения для генерации другой последовательности (при перезапуске программы)
вам не нужно ничего запоминать, сохраняете результат выполнения генерации в переменной и все, пользователь выбирает просто вывод данных, новая генерация выполняется только после перезапуска...
 
Последнее редактирование:
  • Мне нравится
Реакции: Nika

Nika

Новичок
Пользователь
Ноя 1, 2021
7
0
1
если я правильно понял

вам не нужно ничего запоминать, сохраняете результат выполнения генерации в переменной и все, пользователь выбирает просто вывод данных, новая генерация выполняется только после перезапуска...
Что сохранять данные в переменной, я понимаю) А вот как осуществить повторный вызов функции пользователем с использованием тех же данных не знаю. Может быть, мне поможет графический интерфейс с двумя кнопочками, которые будут отвечать за вызов функций f1 и f2 ? Будет ли работать графический интерфейс так, как мне нужно? Т.е. пользователь сможет вызвать функции f1 и f2 необходимое кол-во раз с использованием одних и тех же входных данных? Я плохо знакома с созданием граф. интерфейсов, поэтому интересуюсь, подходит ли он мне, или можно другим способом организовать взаимодействие..Подскажите, пожалуйста)
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 580
457
83
ну интерактивно через консоль
типо так
Python:
def f1():
    a, b, c, m = input("Введите значения a, b, c, m через пробел: ").split()
    f2(a, b, c, m)
    while True:
        answer = input("Продолжить? y/n: ")
        if answer == "y":
            f2(a, b, c, m)
        else:
            break


def f2(a, b, c, m):
    print("Значения из f1: ", a, b, c, m)


f1()
 
  • Мне нравится
Реакции: Nika

Nika

Новичок
Пользователь
Ноя 1, 2021
7
0
1
ну интерактивно через консоль
типо так
Python:
def f1():
    a, b, c, m = input("Введите значения a, b, c, m через пробел: ").split()
    f2(a, b, c, m)
    while True:
        answer = input("Продолжить? y/n: ")
        if answer == "y":
            f2(a, b, c, m)
        else:
            break


def f2(a, b, c, m):
    print("Значения из f1: ", a, b, c, m)


f1()
Спасибо
 

Форум IT Специалистов