Генератор случайных названий с помощью random.choice
У меня есть код, который генерирует название из данных значений в списках:
import random
import pyautogui as p
first_word = ['Hair Rush ', 'Fat 2 Fit ', 'Sandman Run ', 'Butt Clash ', 'Shape-shifting ', 'Clothes Run ', 'Long Neck Run ', 'Juice Run ', 'Pancake Run ', 'Layers Roll ']
second_word = ['Gameplay ', 'All Levels ', 'Walkthrough ']
third_word = ['Gameplay ', 'All Levels ', 'Walkthrough ']
fourth_word = ['Mobile ',]
fifth_word = ['iOS, Android ']
sixth_word = ['Gameplay ', 'All Levels ', 'Walkthrough ' ]
seventh_word = ['Body Run Game ', 'Squat Girls Game ', 'Stick Run Game ', 'DressUp Game ']
eighth_word = ['New Max Level ', 'Update Level ', 'Level Up ', ]
last_word = ['B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'X', 'Y', 'Z', 'A', 'E', 'I', 'O', 'U', 'Y', '0','1','2','3','4','5','6','7','8','9']
p.typewrite(random.choice(first_word))
p.typewrite(random.choice(second_word))
p.typewrite(random.choice(third_word)) # если выбралось то же самое, что и в second_word, то перевыбрать
p.typewrite(random.choice(fourth_word))
p.typewrite(random.choice(fifth_word))
p.typewrite(random.choice(sixth_word)) # выбрать оставшееся слово
p.typewrite(random.choice(seventh_word))
p.typewrite(random.choice(eighth_word))
p.typewrite(random.choice(last_word))
p.typewrite(random.choice(last_word))
p.typewrite(random.choice(last_word))
p.typewrite(random.choice(last_word))
p.typewrite(random.choice(last_word))
Я не понимаю, как мне сделать так, чтобы если во втором typewrite напечаталось слово 'Gameplay ', то в третьем typewrite выбор уже должен идти только между 'All Levels ' и 'Walkthrough ', а в шестом typewrite остался только 1 возможный вариант.
Ответы (1 шт):
Ну примерно вот так, но тут нет проверок на то, что выбор невозможен. Может зациклиться, если будет невозможное для выбора сочетание данных. И тут только выбор вариантов в список, без взаимодействия с autogui:
import random
import pyautogui as p
def choose_words(lst_words, last_repeat = 1):
my_words = lst_words[:-1]
my_words.extend([lst_words[-1]] * last_repeat)
while True:
choosen = []
for words in my_words:
word = random.choice(words)
if word in choosen:
continue
choosen.append(word)
return choosen
all_words = [
['Hair Rush ', 'Fat 2 Fit ', 'Sandman Run ', 'Butt Clash ', 'Shape-shifting ', 'Clothes Run ', 'Long Neck Run ', 'Juice Run ', 'Pancake Run ', 'Layers Roll '],
['Gameplay ', 'All Levels ', 'Walkthrough '],
['Gameplay ', 'All Levels ', 'Walkthrough '],
['Mobile ',],
['iOS, Android '],
['Gameplay ', 'All Levels ', 'Walkthrough ' ],
['Body Run Game ', 'Squat Girls Game ', 'Stick Run Game ', 'DressUp Game '],
['New Max Level ', 'Update Level ', 'Level Up ', ],
['B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'X', 'Y', 'Z', 'A', 'E', 'I', 'O', 'U', 'Y', '0','1','2','3','4','5','6','7','8','9']
]
print(choose_words(all_words, 5))
Пример вывода:
['Juice Run ', 'Gameplay ', 'Walkthrough ', 'Mobile ', 'iOS, Android ', 'Body Run Game ', 'Update Level ', 'C', '9', 'O', '5', 'W']
Не создавайте однотипные переменные, даже если это уже списки. Помещайте однотипные данные в коллекции, это можно делать многоуровнево, никаких проблем. Так работать с данными гораздо удобнее, чем хранить множество отдельных переменных, с отдельными переменными сложно массово работать.