Escreva o códigoDesafioPython
Mover jogador na grade com WASD
Juntar while, lower e if em grade 5x5.
Comece em 0 0 numa grade 5x5 de 0 a 4. Leia comandos (W, A, S, D) até fim, sem ligar para maiúsculas. Cada passo anda 1; se sair da grade, fica parado e conta 1 colisão. Ao final imprima x y colisões numa linha. D aumenta x, A diminui x, S aumenta y e W diminui y. Comandos diferentes desses e de fim não movem nem contam colisão.
Entrada: Várias linhas com W, A, S, D até fim em qualquer letra.
Saída: Uma linha com x, y e colisões.
Revisa aula 8 (14/08), aula 9 (18/08), aula 14 (04/09)
Exemplo 1
- Entrada
D D S fim
- Saída esperada
2 1 0
Confere três passos válidos sem colisão.
Exemplo 2
- Entrada
W A fim
- Saída esperada
0 0 2
Confere duas colisões saindo da origem.
Solução comentada
Verifique uma tentativa sua para liberar a solução.
x = 0
y = 0
col = 0
while True:
c = input().lower()
if c == "fim":
break
nx = x + (1 if c == "d" else -1 if c == "a" else 0)
ny = y + (1 if c == "s" else -1 if c == "w" else 0)
if nx < 0 or nx > 4 or ny < 0 or ny > 4:
col = col + 1
else:
x = nx
y = ny
print(f"{x} {y} {col}")A solução lê em while True com .lower() e sai no fim. Ela calcula a próxima posição com ternário para cada letra. Se sair de 0 a 4 conta colisão, senão atualiza.
Erro comum: Esquecer .lower() e travar com D ou FIM maiúsculos.
Escreva sua solução e verifique quando quiser.