Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Sobre strings no python

Temos a palavra_secreta = "banana"

Quando informamos no terminal o chute 'a', o if if(chute.upper() == letra.upper()): consegue encontrar o caractere passado, da mesma forma se informarmos o chute = "A", isso por que a palavra_secreta não foi alterada, certo?

Minha dúvida é, se a palavra_secreta = "BANANA" estiver em "caixa alta", uppercase, e passar o chute = "a" ele também encontra a letra a, mas em "caixa baixa", sendo que a palavra_secreta está em "caixa alta" lowercase, por que isso ocorre?

2 respostas
solução!

Oi, Ruan! Tudo bem?

O código if(chute.upper() == letra.upper()): consegue encontrar a letra 'a' mesmo quando a palavra_secreta está em caixa alta justamente por causa do método .upper() que é aplicado tanto ao chute quanto à letra.

O método .upper() transforma todas as letras de uma string em maiúsculas, então, quando executamos chute.upper(), se o chute era "a", ele se torna "A". Da mesma forma, quando executamos letra.upper(), se a letra era "a", ela se torna "A". Isso significa que a comparação é feita sempre entre letras maiúsculas, independente de como a letra foi originalmente inserida.

Por exemplo, se a palavra_secreta for "BANANA" e o chute for "a", o que acontece é o seguinte:

  • chute.upper() transforma "a" em "A"
  • letra.upper() transforma cada letra da palavra_secreta em maiúscula, mas como elas já são maiúsculas, elas permanecem as mesmas.
  • Então a comparação é feita entre "A" (chute) e "A" (letra da palavra_secreta), que são iguais.

O Python tem muitos métodos úteis como .upper() que nos ajudam a lidar com strings de maneiras flexíveis!

Espero ter ajudado! Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓

Entendi, de qualquer forma, independente do chute nesse cenário que foi proposto os caracteres serão transformados em maiúsculas. Obrigado pela explicação.