После выполнения одного из условий elif программа всё равно выполняет else после break в цикле while
В этом коде проверяется то, какую ставку делает пользователь и выводится количество денег после ставки. Я использовал try и except чтобы ловить ошибку если пользователь введет вместо цифры букву. А если пользователь введет неизвестное число то программа по идее должна была просто выводить предупреждение и заново запускать код.
class BlackJack(object):
"""docstring for BlackJack"""
def __init__(self, arg):
super(BlackJack, self).__init__()
self.arg = arg
def bet(self, amount):
self.arg -= amount
return self.arg
cash = 2500
bet = 0
bjack = BlackJack(cash)
print('У вас',cash)
Следующая часть кода предположительно содержит ошибку.
def main():
try:
z = int(input('введите число для ставки\nчтобы поставить 100 нажмите 1\nчтобы поставить 200 нажмите 2\nчтобы поставить 500 нажмите 3\nчтобы поставить 1000 нажмите 4\n'))
while True:
if z == 1:
bet = bjack.bet(100)
print('\nваша ставка',cash - bet,'(ваш счет -',bet,')')
break
elif z == 2:
bet = bjack.bet(200)
print('\nваша ставка',cash - bet,'(ваш счет -',bet,')')
break
elif z == 3:
bet = bjack.bet(500)
print('\nваша ставка',cash - bet,'(ваш счет -',bet,')')
break
elif z == 4:
bet = bjack.bet(1000)
print('\nваша ставка',cash - bet,'(ваш счет -',bet,')')
break
else:
print('\nВы ввели неизвестное число,\nхотя ожидалось одно из следующих цифр: 1,2,3,4\n')
main()
except ValueError:
print('\nОшибка! Вы ввели букву вместо цифры!\n')
main()
main()
При запуске программы через терминал программа просит ввести одно из следующих цифр: 1,2,3,4.
У вас 2500
введите число для ставки
чтобы поставить 100 нажмите 1
чтобы поставить 200 нажмите 2
чтобы поставить 500 нажмите 3
чтобы поставить 1000 нажмите 4
Специально ввожу цифру 7 и тут срабатывает ELSE
Вы ввели неизвестное число,
хотя ожидалось одно из следующих цифр: 1,2,3,4
введите число для ставки
чтобы поставить 100 нажмите 1
чтобы поставить 200 нажмите 2
чтобы поставить 500 нажмите 3
чтобы поставить 1000 нажмите 4
Потом ввожу цифру 2 и по идее программа должна выполнить вычисление и завершиться, но вместо этого программа выполняет и вычисление и потом ещё раз зачем-то запускает ELSE
ваша ставка 200 (ваш счет - 2300 )
Вы ввели неизвестное число,
хотя ожидалось одно из следующих цифр: 1,2,3,4
введите число для ставки
чтобы поставить 100 нажмите 1
чтобы поставить 200 нажмите 2
чтобы поставить 500 нажмите 3
чтобы поставить 1000 нажмите 4
И дальше это продолжается как замкнутый круг. Извиняюсь если вопрос задан некорректно! Заранее спасибо!
Ответы (1 шт):
Предположу, что ваш код должен выглядеть как-то так
def main():
bets = { 1: 100, 2:200, 3:500, 4:1000}
while True:
try:
z = int(input('введите число для ставки\nчтобы поставить 100 нажмите 1\nчтобы поставить 200 нажмите 2\nчтобы поставить 500 нажмите 3\nчтобы поставить 1000 нажмите 4\n'))
if z in bets:
bet = bjack.bet(bets[z])
print('\nваша ставка',cash - bet,'(ваш счет -',bet,')')
break
else:
print('\nВы ввели неизвестное число,\nхотя ожидалось одно из следующих цифр: 1,2,3,4\n')
except ValueError:
print('\nОшибка! Вы ввели букву вместо цифры!\n')
main()