Как сравнить несколько переменных?

#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.