Как узнать есть ли значение переменной внутри списка

У меня есть список выигрышный значений и переменная, которой присваивается случайное значение. Я хочу получить такой результат: если внутри списка есть число, которое равняется переменной, то ..., если переменная не равняется никакому числу из списка, то... Проблема заключается в том, что когда происходит сравнивание, то сравнивается каждое число из списка.

Код:

import random

startmoney = int(input("Введите ваш стартовый баланс: "))

COEFFICIENT = 0.001

WIN_FIELDS = [2, 4, 6, 8, 10, 11, 13, 15, 17, 20, 22, 24, 26, 28, 28, 29, 31, 33, 35]

balance1 = []
games1 = []
def money_manipulaion(money):
    bet = startmoney * COEFFICIENT
    if bet > money:
        bet = money
    money -= bet
    return money, bet


def strategy1():
    win = 0
    loose = 0
    games = 0
    money = startmoney

    while money > 0:
        money, bet = money_manipulaion(money)

        balance1.append(money)
        games1.append(len(games1) + 1)

        ball = random.randint(1, 37)

        for a in WIN_FIELDS:
            if ball == a:
                money += bet * 2
                win += 1
            else:
                loose += 1
    games = win + loose

Теперь чуть подробнее: допустим ball = 15. Когда код доходит до строки if ball == a:, то он проверяет каждую переменную списка на соответствие, тем самым накручивая счетчик поражений, делает он это пока не проверит каждое число. Я бы хотел, что бы программа проверяла, есть ли в списке число равное переменной и выполняло условие 1, а если его нет, то условие 2, не проверяя каждый элемент по очереди. Как это можно реализовать?


Ответы (1 шт):

Автор решения: Roman Konoval

Цикл не нужен вообще. Замените его на:

if ball in WIN_FIELDS:
   money += bet * 2
   win += 1
else:
   loose += 1

И WIN_FIELDS лучше сделать множеством - так поиск быстрее будет для больших списков:

WIN_FIELDS = {2, 4, 8, .... и т.д}
→ Ссылка