Как менять местами значения внутри переменной?
Мне нужно, чтобы в новой переменной старые переменные менялись местами. То есть:
from random import randint
x=randint(0,9)
y=randint(0,9)
trial_1=
trial_2=
trial_3=
Нужно, чтобы в коде после знака = было 3 цифры (x, y и 0). И, чтобы эти три знака менялись местами в каждой переменной trial. Число 0 не должно стоять в начале переменной. Переменная должна на выходе быть одним числом, то есть, не (1,0,4)((например)), а 104.
Ответы (2 шт):
Используйте метод rotate класса deque из модуля collections:
from random import randint
from collections import deque
x = randint(0,9)
y = randint(0,9)
dq = deque((x ,y, 0))
print(dq) # deque([5, 6, 0])
dq.rotate()
trial_1 = list(dq)
dq.rotate()
trial_2 = list(dq)
dq.rotate()
trial_3 = list(dq)
print(trial_1) # [0, 5, 6]
print(trial_2) # [6, 0, 5]
print(trial_3) # [5, 6, 0]
Если нужны все возможные перестановки трех значений, то нужно использовать функцию permutations из itertools:
from random import randint
from itertools import permutations
x = randint(0,9)
y = randint(0,9)
p = permutations([x, y, 0])
trials = list(p)
print(trials)
Пример вывода:
[(7, 8, 0), (7, 0, 8), (8, 7, 0), (8, 0, 7), (0, 7, 8), (0, 8, 7)]
мне нужно, чтобы при каждом запуске кода, менялся порядок в каждой переменной trial
Если нужно, чтобы при каждом запуске кода выбиралось три случайные перестановки, то нужно с помощью функции random.sample выбирать из списка trials три значения (случайно выбранных) и записывать их в переменные:
trial_1, trial_2, trial_3 = sample(trials, 3)
print(trial_1)
print(trial_2)
print(trial_3)
В принципе, можно было бы использовать random.shuffle (перемешивание), но тогда была бы вероятность, что в двух переменных окажется набор значений в одинаковом порядке.