Сохранение данных из random и сравнение их с данными из этого же random в следующем цикле
Я совсем новичок в изучении pyton. Решаю для себя не большие задачки, некоторые из них придумываю сам для себя. Что хотел сделать: в цикле, random выдает число "х" если оно совпадает с числом из списка "а", то ставится в "n" и остается там до следующего цикла, если в следующем цикле "х" совпадает с числом в списке "b", то ставится в "m" и происходит их сравнение, если "х" не совпадает с числами ни в "а" ни в "b", то оно отбрасывается, а если совпадает, но уже есть "m" или "n" то ставится вместо "m" или "n". При совпадении "m" и "n" цикл прекращается. Основное тут условие, что random должен быть один, а его значения должны переходить в следующие циклы. Я пробовал это сделать через global и copy, но ничего не получилось, думал об индексе, но понял, что это не то. Может это совсем просто (сохранение значений из random в последующих циклах) и я совсем глупый, или это не возможно, как деление на ноль? Бьюсь уже неделю, сегодня даже, что то снилось, но все никак. Прошу у старших товарищей помощи. Код не правильный, он просто для представления того, что я хочу.
import copy
import random
a= [i for i in range(1,20,3)]
b= [i for i in range(1,20,4)]
while True:
x=random.randint(1,20)
print('x',x)
if x in a:
n = copy.copy(x)
print('n',n )
if x in b:
m = copy.copy(x)
print('m', m)
if n > m:
print('n>m', n, '>', m)
if n < m:
print('n<m', n, '<', m)
if n==m:
print('b=m', n, '=', m)
break
Ответы (1 шт):
Нужно бы привести точное условие задачи. Сейчас вы ищете, не встретится ли в двух соседних итерациях одно и то же случайное число 1 или 13 (только такие совпадения возможны при заданных списках). Смысла в этом особого нет.
Если по минимуму править вашу программу, то можно сделать так. copy
вам не нужны.
import random
a= [i for i in range(1,20,3)]
b= [i for i in range(1,20,4)]
i = 0
n = -2
m = -1
while True:
x=random.randint(1,20)
print('x',x)
if i:
if x in a:
n = x
print('n',n )
else:
if x in b:
m = x
print('m', m)
if n > m:
print('n>m', n, '>', m)
if n < m:
print('n<m', n, '<', m)
if n==m:
print('b=m', n, '=', m)
break
i = 1 - i