3
respostas

Lógica das letras maiúsculas

alguém pode me explicar melhor a lógica deste código? como agora eu posso digita maiúscula ou minúscula e ainda me devolver um resultado verdadeiro?

chute = input("Qual letra? ") chute = chute.strip()

index = 0
for letra in palavra_secreta:
    if (chute.upper() == letra.upper()):
        print("Encontrei a letra {} na posição {}".format(letra, index))
    index = index + 1
3 respostas
if chute.upper() == letra.upper():

A função upper() contida na classe string, trata o valor do tipo STRING contida nas variáveis chute e letra como maiúsculas.

Se você quisesse por exemplo fazer a comparação convertento todas as letras em minúsculas, você poderia usar a função lower()

Rode o código abaixo e veja o resultado de cada linha:

print(f'{"Alura"}')
print(f'{"Alura".upper()}')
print(f'{"Alura".lower()}')

Da pra usar as built_in direto na atribuição, além da f'' no print para otimizar o codigo:

palavra_secreta = "banana".upper()

chute = input("Qual letra? ").strip().upper() 

index = 0
for letra in palavra_secreta:
    if (chute.upper() == letra.upper()):
        print(f"Encontrei a letra {letra} na posição {index}") 
    index = index + 1

A função Upper converteu tanto a palavra secreta quanto o chute digitado, em maiúsculo, deixando ambos iguais, por isso retorna verdadeiro.

O código do exemplo acaba repetindo conversões, creio que a intenção do Nico foi mostrar a funcionalidade dos recursos. O código pode ficar mais enxuto. Se a palavra banana já esta toda em minúsculo, não preciso mexer nela. Apenas no dado de entrada (chute) é que preciso tratar, no caso eliminando espaços e deixando sempre convertido em minúsculo. :

palavra_secreta = 'banana'

chute = str(input('Qual a letra: ')).lower().strip() # na entrada do dado já deixo a condição de deixar sempre em minúsculo  e eliminar os espaços

index = 0

for letra in palavra_secreta:

    if chute == letra: 
        print('Encontrei a letra {} na posição {}'.format(letra, index))
    index += 1

print('jogando ...')