Bloqueio de acesso

Olá pessoal estou aprendendo python, e estou estudando o uso do if e do for, meu objetivo é criar um programa que quando eu digito a senha errada 3 vezes o acesso é bloqueado, mas estou cometendo um erro onde eu imprimo a frase 3 vezes, como arrumo isso ?

acesso = 'Baleia12'

login = str(input('Digite a sua senha'))

if login != acesso:
    print('senha incorreta')
    for login in range(4):
        print('acesso bloqueado')
else:
    print('acesso liberado')

Primeiramente, input já retorna uma string, então fazer str(input(...)) é completamente redundante e desnecessário.

Se a ideia é pedir a senha várias vezes, até acertar, então todo o código deve estar dentro do loop. Aí existem duas condições para interrompê-lo: se atingiu o máximo de tentativas ou se acertou. Algo assim:

acesso = 'Baleia12'
max_tentativas = 3 # se errar 3 vezes, já era

tentativas = 0 # quantas vezes já tentou
while tentativas < max_tentativas:
    login = input('Digite a sua senha: ')
    if login != acesso:
        print('senha incorreta')
        tentativas += 1
    else:
        print('acesso liberado')
        break # se acertou, sai do while

obrigado hugo

@hugokotsubo eu só não entendi muito bem essa parte “Primeiramente, input já retorna uma string, então fazer str(input(…)) é completamente redundante e desnecessário.”

o input ao qual se refere é a string de entrada da variável acesso ?

input é uma função que lê o que vc digitou e retorna isso em uma string.

No caso, essa string é colocada na variável login.

Como ela retorna uma string, então não precisa fazer str(input()). Vc usa str(algo) quando quer converter algo para string. Mas como o retorno de input já é uma string, não precisa usar str.

1 curtida

nossa ficou muito Claro, obrigado.