Прежде всего, пожалуйста, не называйте свою переменную random
. Он скрывает имя модуля random
, и вы не сможете использовать модуль random
в остальной области видимости из-за этого.
Итак, назовем результат rnd
.
Вы должны использовать if rnd in range(0, 16): ...
вместо for
. Синтаксис
for a in list_:
foo(a)
будет извлекать каждый элемент в list_
один за другим, присваивать ему a
каждый раз, а затем вызывать тело. Как видно из for
, это петля . Таким образом, вы фактически устанавливаете winning = 0
17 раз и т. Д.
С другой стороны, синтаксис
if b in list_:
foo(b)
, который можно увидеть как
if (b in list_):
foo(b)
проверит, является ли b
элементом list_
, и выполнит тело, если условие выполнено ( in
также является оператором .)
Не следует использовать in range(...)
, чтобы проверить, находится ли число в числовом диапазоне, потому что поиск в списке занимает линейное время. Pythonic способ заключается в использовании a <= b < c
обозначения :
if 0 <= rnd < 16:
winning = 0
Но на самом деле это можно записать проще (независимо от того, какой язык вы используете) как
if rnd < 16:
winning = 0
elif rnd < 34:
winning = 1
else:
winning = 45