#python
Вопрос:
Итак, в моем коде у меня есть 12 переменных, состоящих из разных слов, они представляют собой пары (например, красный, красный, синий, синий, желтый, желтый, зеленый, зеленый, фиолетовый, фиолетовый, индиго, индиго). Однако они расположены в случайном порядке, и нет никакого способа узнать, где они находятся в коде.
Есть ли какой-нибудь способ быстро найти, где находится другое слово пары без миллиона if
утверждений?
Эту проблему довольно трудно описать, но то, что делает код, — это автоматизация веб-игры, в которой вы должны сопоставить французское слово с английским словом.До сих пор я собрал список всех слов, которые должны совпадать, и я перевел все слова на английский, но теперь мне нужно сопоставить французское слово с соответствующим английским словом, а затем нажать там, чтобы завершить игру.
Например:
word1 = "Hello"
word2 = "Morning"
word3 = "Hello"
word4 = "Morning"
Чего я хочу избежать, так это прохождения и использования:
if word1 == word2:
click(x, y)
if word1 == word3:
click(x, y)
Так что, как вы можете себе представить, сделать это для каждой комбинации из 12 переменных было бы непросто.
Вот браузерная игра, если я плохо ее объяснил https://quizlet.com/601969734/match
Комментарии:
1. как насчет
if word1 in {word2, word3, ...}:
этого ?2. Должны ли вы реализовывать свои слова как отдельные переменные? Не могли бы вы просто вставить их в список или словарь? Это сделало бы решение таким же простым, как использование любого()
3.
collections.Counter([word1, word2, ...])
могу быстро сообщить вам, если у вас есть какие-либо дубликаты.4. Я рекомендую хранить ваши слова в структуре данных вместо ряда пронумерованных переменных.
5. Спасибо за помощь, я вам очень признателен
Ответ №1:
Вы можете поместить переменные в список, а затем использовать циклы:
word_list = [word1, word2, word3, word4]
for ai, a in enumerate(word_list):
for bi, b in enumerate(word_list):
if ai < bi and a == b:
click(a, b)
Ответ №2:
Прежде всего, вам нужно научиться использовать сбор данных. Ваш вопрос должен основываться на списке строк, а не на отдельных переменных.
word_list = ["Hello", "Morning", "Hello", "Morning"]
Отсюда очень просто использовать встроенные функции для поиска подходящих элементов:
for idx, word in enumerate(word_list):
match = index(word, word_list[idx 1:]) # Look for word in the rest of the list
if match > 0:
# you have matching words at positions idx and match.