В пайтоне не принимается новое значение переменной вне цикла

Вот сам код

from random import randint
balance = 100
print('Казино!')
while 1<2:
    print('Ваш баланс:', balance)
    stavka = int(input('Введите ставку'))
    if stavka > balance:
        print('Не та ставка!')
    else:
        perem = randint(1, 2)
    if perem == 1:
        print('Вы выиграли, ваш нынешний баланс равен', balance + stavka * 1.3)
        balance + stavka * 1.3
    else:
        print('Вы проиграли :(', stavka)
    vihod = input('Хотите ли вы выйти из Казино? (Да/Нет)')
    if vihod == 'Да':
        print('Вы вышли из Казино')
        break
    else:
        print('Вы не вышли из Казино')

А еще просьба, не оскорбляйте меня за большое написание кода....


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

Автор решения: LolPopGames
from random import randint
balance = 100
perem = 0
print('Казино!')
while True:
    print('Ваш баланс:', balance)
    stavka = int(input('Введите ставку: '))
    if stavka > balance:
        print('Не та ставка!')
        continue
    else:
        perem = randint(1, 2)
    if perem == 1:
        balance += stavka * 1.3
        print('Вы выиграли, ваш нынешний баланс равен', balance)
    else:
        print('Вы проиграли :(', stavka)
        balance -= stavka
    vihod = input('Хотите ли вы выйти из Казино? (Y/N)')
    if vihod in "Yy":
        print('Вы вышли из Казино')
        break
    else:
        print('Вы не вышли из Казино')

Изменения:

  • Иницилизирована (создана) perem

Поскольку мы её создавали только в 1-ом else, и она создавалась как локальная переменная этого else, и после его окончания она "стиралась"

  • Добавлено изменение переменной balance

В строке balance + stavka * 1.3 вы не делали ровным счетом ничего, тут просто вычислилось а результат некуда не пошел. Заменено на balance += stavka * 1.3, а также в проигрыше добавилась balance -= stavka

  • Другое (мелкие касметические изменения)
→ Ссылка
Автор решения: MarianD

Посмотрите на эту часть вашего кода:

if stavka > balance:
    print('Не та ставка!')
else:
    perem = randint(1, 2)
if perem == 1:

Когда условие stavka > balance выполнено, ветвь

else:
    perem = randint(1, 2)

будет перепущена и, таким образом, переменная perem не будет определена. Потому следующая команда

if perem == 1:

не будет иметь смысл и возникнет ошибка.

→ Ссылка