Попробуйте эту структуру:
num = 3
while input("What's the secret password: ") != "bananas" and num-1 != 0:
num -= 1
print(f"Wrong Password! You have {num} chance" + ['_', ' ', 's '][num] + "left")
print("Correct") if num else print("Too many wrong attempts. You are locked out!")
Входные данные можно напрямую использовать в условии while - если у вас осталось ноль попыток или вы получили правильный пароль, while l oop прерывается и if num:
( num больше нуля - Истина) отображается соответствующее сообщение.
И как функция:
def pswd_entry(num=3):
while input("What's the secret password: ") != "bananas" and num-1 != 0:
num -= 1
print(f"Wrong Password! You have {num} chance" + ['_', ' ', 's '][num] +
"left")
print("Correct") if num else print("Too many wrong attempts. You are locked
out!")
Примечание: pswd_entry(num=3)
имеет необязательный аргумент num
, который по умолчанию будет 3
, если оставлено пустым.
Разъяснение
Наше количество попыток:
num = 3
The While L oop
Первое условие: input("What's the secret password: ") != "bananas"
input()
будет ждать, пока пользователь не введет значение, и если это значение не «бананы», то while l oop не сломается.
Второе условие: num-1 != 0
Это проверит, что количество попыток (минус одна) не (!=
) равно 0.
Если условие 1 and
условие 2 выполнено, будет выполняться while l oop .
Одна попытка вычитается num -=1
(то же, что и num = num -1
), а затем записывается предупреждение о количестве оставшихся шансов.
+['_', ' ', 's '][num]
выбирает, будет ли 's'
добавляется к шанс / с - например, если остался 1 шанс (т.е. num = 1
), просто ' '
(пробел) добавляется к 'chance'
Если num = 2
:
['_', ' ', 's '][2]
- ([0 element, 1 element, 2 element][select 2 element]
) = 's' добавляется к chance
-> chances
while input("What's the secret password: ") != "bananas" and num-1 != 0:
num -= 1
print(f"Wrong Password! You have {num} chance" + ['_', ' ', 's '][num] + "left")
Наконец - Оператор печати
print("Correct") if num else print("Too many wrong attempts. You are locked out!")
if num
будет делать print("Correct")
, если значение num !=0
- если здесь проверьте, что num
имеет значение и не равно нулю (False) - в противном случае будет выведено сообщение о блокировке (из else
).