Ola Ysabella. Entao, pude perceber que o seu codigo se consiste de dois "esquemas diferentes", parece que voce estava fazendo uma coisa (linhas 3 a 6, onde ha o nome lua, etc) e em seguida quis mudar para uma nova proposta, onde o usuario digitaria cada variavel. Voce perguntou porque o codigo funcionou após retirar o let das linhas onde há o comando prompt, e é simples: voce ja havia declarado essas mesmas variaveis, com os exatos nomes, utilizando um let la atras, e agora com a resposta do usuario voce nao estaria definindo essas variaveiis do zero, apenas alterando os valores delas, por isso não era necessario outro let. Como exemplo disso, quero te lembrar de uma pratica que vimos em que fizemos um contador:
`let contador = 1;
while (contador < 4) {
console.log('Executando a interação ' + contador);
contador = contador + 1;
}`
Nesse exemplo voce ve que usamos o let no inicio para declarar a variavel "contador", e depois nao precisamos colocar o let onde vamos mudar o valor dessa variavel "contador"? Isso foi porque ja haviamos reservado um espaço para ela. Portanto, o seu codigo funcionaria normalmente se voce retirasse aqueles primeiros comandos let em que definiu um exemplo, e colocasse o let nas linhas de prompt, ou se apenas usasse um nome diferente para elas. Perdão pela resposta longa, espero ter ajudado