<! DOCTYPE html>
<html lang="pt">
<cabeça>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<título>Python Fake Executor</título>
<estilo>
corpo {
família de fontes: Arial, sans-serif;
Contexto: #fafafa;
}
.python-output {
Contexto: #f0f0f0;
Enchimento de Acolchoamento: 8px;
Margem: 8px 0;
borda esquerda: 4px sólido #1e90ff;
família de fontes: monospace;
espaço em branco: pré-enrolamento;
Cor: #1e90ff; /* AZUL */
}
h1 { text-align:center; color:#8B008B; }
h3 { text-align:center; color:#00008B; }
h4 { text-align:center; color:red; }
div[id^="conteudo"] {
Acolchoamento: 15px;
margem: auto;
largura máxima: 600px;
}
</estilo>
</cabeça>
<body>
<h1>Jogar há poesia.</h1>
<div id="conteudo">
<h3>Poesia da infância</h3>
</div>
<div id="conteudo1">
<python>
print("Como foi a tua infância?<br>")
print("Simples e feliz<br>")
ano = 1989
idade = 2025 - ano
print("Idade:")
print(idade)
print("anos")
</python>
</div>
<div id="conteudo2">
<python>
print("Outro bloco Python<br>")
x = 10
y = 5
print(x)
print(y)
</python>
</div>
<div id="conteudo3">
<python>
print("A Maria tem ")
b = (23 * 2)
print(b)
print("anos")
</python>
</div>
<div id="conteudo4">
<python>
print("vamos criar amor ")
print("vamos ser felizes")
a = (23 * 2 *45)
print(a)
print("anos")
</python>
</div>
<script>
function executarPythonFake(html) {
return html.replace(/<python>([\s\S]*?)<\/python>/g, function (_, codigo) {
const linhas = codigo.split(/\r?\n/);
const vars = {};
let saida = "";
for (let linha of linhas) {
linha = linha.trim();
if (linha === "") continue;
// ATRIBUIÇÃO: nome = expressão matemática
if (/^[a-zA-Z_]\w*\s*=/.test(linha)) {
let partes = linha.split("=");
let nome = partes.shift().trim();
let expr = partes.join("=").trim();
// substituir variáveis conhecidas
expr = expr.replace(/[a-zA-Z_]\w*/g, v => {
if (vars.hasOwnProperty(v)) return vars[v];
return v;
});
// validar expressão (números, operadores e parênteses)
if (!/^[0-9+\-*/().\s]+$/.test(expr)) {
return `<div class="python-output">[ERRO NA EXPRESSÃO]</div>`;
}
try {
vars[nome] = Function("return (" + expr + ")")();
} catch {
return `<div class="python-output">[ERRO AO CALCULAR]</div>`;
}
continue;
}
if (/^print\s*\(.+\)$/.test(linha)) {
let conteudo = linha.replace(/^print\s*\(|\)$/g, "").trim();
// string literal
if (
(conteudo.startsWith('"') && conteudo.endsWith('"')) ||
(conteudo.startsWith("'") && conteudo.endsWith("'"))
) {
saida += conteudo.slice(1, -1);
}
// variável
else if (vars.hasOwnProperty(conteudo)) {
saida += vars[conteudo];
}
else {
return `<div class="python-output">[ERRO NO PRINT]</div>`;
}
saida += "\n";
continue;
}
return `<div class="python-output">[COMANDO NÃO SUPORTADO]</div>`;
}
retorne '<div class="python-output">${saida}</div>';
});
}
window.addEventListener("load", () => {
document.querySelectorAll("div[id^='conteudo']").forEach(div => {
div.innerHTML = executarPythonFake(div.innerHTML);
});
});
</roteiro>
</corpo>
</html>
<!DOCTYPE html>
<html lang="pt">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Python Fake Executor</title>
<style>
body {
font-family: Arial, sans-serif;
background: #fafafa;
display: flex;
justify-content: center;
align-items: flex-start;
min-height: 100vh;
padding-top: 50px;
}
.container {
background: #ffffff;
padding: 30px;
border-radius: 10px;
box-shadow: 0 8px 20px rgba(0,0,0,0.1);
max-width: 500px;
width: 100%;
}
h1 {
text-align: center;
color: #4B0082;
margin-bottom: 20px;
}
.input-group {
display: flex;
margin-bottom: 20px;
}
input[type="text"] {
flex: 1;
padding: 10px;
border: 2px solid #ddd;
border-radius: 5px 0 0 5px;
font-size: 16px;
outline: none;
transition: border 0.3s;
}
input[type="text"]:focus {
border-color: #4B0082;
}
button#enviarBtn {
padding: 10px 12px;
background: #4B0082;
color: white;
border: none;
border-radius: 0 5px 5px 0;
cursor: pointer;
font-size: 14px;
transition: background 0.3s;
}
button#enviarBtn:hover {
background: #6A0DAD;
}
button {
padding: 10px 20px;
background: #4B0082;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 16px;
transition: background 0.3s;
}
button:hover {
background: #6A0DAD;
}
textarea {
width: 100%;
padding: 15px;
border-radius: 10px;
border: 2px solid #ddd;
font-size: 16px;
resize: none;
min-height: 150px;
outline: none;
transition: border 0.3s;
}
textarea:focus {
border-color: #4B0082;
}
.buttons {
display: flex;
gap: 10px;
margin-top: 10px;
}
#storageArea {
margin-top: 20px;
padding: 15px;
border-radius: 10px;
border: 2px solid #ddd;
background: #f0f0f0;
min-height: 100px;
white-space: pre-wrap;
font-family: monospace;
color: #1e90ff;
}
</style>
</head>
<body>
<div class="container">
<h1>Digite algo e envie</h1>
<!-- Input separado do botão -->
<div class="input-group">
<input type="text" id="meuInput" placeholder="Escreva aqui" required>
<button id="enviarBtn" type="button">Enviar</button>
</div>
<!-- Área principal -->
<textarea id="saida" placeholder="Aqui aparecerá o que você digitou"></textarea>
<!-- Botões Salvar e Limpar -->
<div class="buttons">
<button id="salvarBtn" type="button">💾 Salvar</button>
<button id="limparBtn" type="button">🗑 Limpar</button>
</div>
<!-- Área Storage -->
<h2>Conteúdo Salvo na Storage:</h2>
<div id="storageArea">Nada salvo ainda.</div>
</div>
<script>
const inputField = document.getElementById('meuInput');
const enviarBtn = document.getElementById('enviarBtn');
const textarea = document.getElementById('saida');
const salvarBtn = document.getElementById('salvarBtn');
const limparBtn = document.getElementById('limparBtn');
const storageArea = document.getElementById('storageArea');
// Atualiza exibição da storage
function atualizarStorageArea() {
const conteudo = localStorage.getItem('pythonFakeConteudo');
storageArea.textContent = conteudo ? conteudo : 'Nada salvo ainda.';
}
// Carrega conteúdo salvo ao abrir
window.addEventListener('load', () => {
const conteudoSalvo = localStorage.getItem('pythonFakeConteudo');
if(conteudoSalvo) {
textarea.value = conteudoSalvo;
}
atualizarStorageArea();
});
// Enviar input para textarea (clicando no botão)
enviarBtn.addEventListener('click', () => {
if(inputField.value.trim() === '') return;
textarea.value += inputField.value + '\n';
inputField.value = '';
});
// Salvar conteúdo no localStorage
salvarBtn.addEventListener('click', () => {
localStorage.setItem('pythonFakeConteudo', textarea.value);
atualizarStorageArea();
});
// Limpar conteúdo e storage
limparBtn.addEventListener('click', () => {
textarea.value = '';
localStorage.removeItem('pythonFakeConteudo');
atualizarStorageArea();
});
</script>
</body>
</html>