(python) Как проверить действительность времени l oop, прежде чем позволить пользователю вводить данные? - PullRequest
0 голосов
/ 18 июня 2020
import random

numberList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'jack', 'queen', 'king']
total = 0

while total <= 21:
    output = random.choice(numberList)
    if output == 'jack' or output == 'queen' or output == 'king':
        print(f'({output})')
        output = 10

    print(f'you got {output} points')
    total += output

    ask_cont = input(f'you now have {total} points, continue? [y/n]: ').lower()
    if ask_cont == 'y':
        continue
    else:
        print(f'game finished. You gain {total} points!')
        break
else:
    print(f'you lost! points exceeded = {total - 21} points!')

Я кодирую игру в блэкджек. Однако в то время как l oop (условие: общая сумма на руках <= 21), когда оно <strong>превышает 21 балл, он все равно просит меня продолжить (переменная ask_cont) или нет [y / n] для ОДИН РАЗ до завершения кода, и если я наберу «n», он просто даст мне текущие баллы (> 21) и выражение «игра завершена». Как я могу это исправить? Большое спасибо

(также, если есть способ обрезать код, прокомментируйте, большое спасибо!)

1 Ответ

1 голос
/ 18 июня 2020

Прежде всего, не беспокойтесь о том, что ваш код будет слишком многословным. Лучше иметь длинный читаемый код, чем короткий, трудный для расшифровки. Ваш код выглядит нормально.

Что касается предотвращения продолжения пользователем, если total > 21, это потому, что вы добавляете к общей сумме total += output, прежде чем дойдете до while total <= 21. Чтобы исправить это, у вас есть два варианта.

Во-первых, чтобы он запрашивал в начале while l oop, прежде чем начисляются очки. Если вы сделаете это, вы также попросите его один раз перед запуском while l oop. Обычно это делается с помощью do..while l oop, но python их не имеет.

Вторым необязательным условием было бы просто добавить дополнительный оператор if, где он просит вас продолжить, только если total <= 21, в противном случае он делает что-то, что завершает игру с сообщением о превышении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...