
Есть txt файл такого содержания:(списки)
x = ['python', 'c++', 'JavaScript', 'c#', 'Pascal', 'bash', 'shell', 'AutoIt'] y = ['windows', 'ubuntu', 'mac', 'android', 'vista', 'xp', 'win2000'] z = ['fara', 'rama', 'goga', 'google', 'zaza', 'faza', 'dura', 'puma']
и т.д. (списков много)
Надо рандомно выбрать одну из переменных, из него тоже выбрать рандомно 4 слова, чтобы не повторялись между собой, и первое слово должно быть как в начале списка. При выборе переменной чтобы тоже не было повторений.
Как решить задачу?
3 Answers


Easy
x = ['python', 'c++', 'JavaScript', 'c#', 'Pascal', 'bash', 'shell', 'AutoIt'] y = ['windows', 'ubuntu', 'mac', 'android', 'vista', 'xp', 'win2000'] z = ['fara', 'rama', 'goga', 'google', 'zaza', 'faza', 'dura', 'puma'] import random a = random.choice(["x","y","z"]) value = [] if a == "x": a = random.sample(['python', 'c++', 'JavaScript', 'c#', 'Pascal', 'bash', 'shell', 'AutoIt'],4) value.append(x[0]) value.append(a) print("Выбран массив x") print("Возвращаю массив", value) elif a == "y": a = random.sample(['windows', 'ubuntu', 'mac', 'android', 'vista', 'xp', 'win2000'],4) value.append(y[0]) value.append(a) print("Выбран массив y") print("Возвращаю массив", value) elif a == "z": a = random.sample(['fara', 'rama', 'goga', 'google', 'zaza', 'faza', 'dura', 'puma'],4) value.append(z[0]) value.append(a) print("Выбран массив z") print("Возвращаю массив", value) a = input()
Если требуется брать списки из отдельного файла, думаю допишешь сам,а для того что бы не повторялись можно использовать множества, но тут из того что ты дал нет повторений.(Хотя код у меня очень уродливый,но если я правильно понял задание, работает(3.5), буду признателен если кто напишет красиво)

Вот функция, которая вернет генератор, на вход подается список или кортеж списков со строками (или чего вам там надо выбрать), а также количество элементов, которое надо выбрать:
import random as r def get_random(lists, k): choice = r.choice(lists) if (k <= len(choice)): indexes = r.sample(range(0, len(choice)) , k) else: raise IndexError indexes.sort() for i in indexes: yield c[i]
Использовать так, например:
a = [i for i in get_random([x, y, z], 4)]

import random x = ['python', 'c++', 'JavaScript', 'c#', 'Pascal', 'bash', 'shell', 'AutoIt'] y = ['windows', 'ubuntu', 'mac', 'android', 'vista', 'xp', 'win2000'] z = ['fara', 'rama', 'goga', 'google', 'zaza', 'faza', 'dura', 'puma'] all_data = [x, y, z] for i in random.sample(all_data, 1): data = i[0] data1 = i[1:] q = random.sample(data1, 3) print(data + '\n' + '\n'.join(q))