Foto de Thiago C.
Thiago há 2 anos
Enviada pelo
Site

Analise de variavel em aquivo externo

Ola, estou tentando que meu programa avalie 3 variaveis em um arquivo de texto.

As variaveis sao:

X = 0.9
Y = 1.5
Z = 2.0

Consigo ler o arquivo e "printar", mas quando tento avaliar a variavel, como:

if X>1:

     print("Variavel X maior que 1")

O programa diz que ela nao foi definida.

Como posso resolver ?

7 respostas
Professor Diogo M.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 2 anos
Contatar Diogo
Pode colocar o trecho do seu código, por gentileza? Fica mais fácil identificar onde está o problema

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta
Envie uma dúvida grátis
Resposta na hora da Minerva IA e de professores particulares
Enviar dúvida
Professor Johny L.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 2 anos
Contatar Johny
tem que converter elas de texto pra variavel primeiro, veja o tipo das variaveis com o comando type. use o metodo astype pra transformar string em float primeiro

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta
Professor César D.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 2 anos
Contatar César Augusto

Como você importou o arquivo externo?

Digamos que estas variáveis foram definidas no arquivo ext.py então, você deve importar o arquivo escrevendo

import ext

Assim, sempre que for acessar uma variável ou função dentro do arquivo, você deve utilizar ext. como prefixo. Por exemplo:

ext.X

é utilizado para acesar a variável X no arquivo ext.py. Com isso, seu desvio condicional deve ser parecido com

if ext.X > 1:
    print("A variavel X é maior que 1")

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta
Professor Bruno C.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 2 anos
Contatar Bruno

Qual o resultado de print(X) ?

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta
Professor Rafael D.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 1 ano
Contatar Rafael

Veja os tipos de dados do Python primeiramente 

REF: Python built-in Types

REF: Tipos de Dados básicos em C

 

Números inteiros, float, double são comparados de maniera diferente do que uma String / Texto.

 

O seu arquivo de texto:

"

X = 0.9
Y = 1.5
Z = 2.0

"

Sendo uma string, voce pode procurar por um texto igual ou semelhante (  if 'procuro' in texto ), buscar pelo indice de alguma letra ou sub-string.

Até aqui OK ?

 

Já os número são guardados na memoria de maneira diferente! Por isso é necessário converter ( PARSE / CASTING ) para cada valor.

OPÇÂO: Se não quiser fazer isso pode utilizar a biblioteca JSON. Más é necessário respeitar a estrutura do JSON.

Não irei entrar em detalhe sobre de como os números são armazenados. 

 

Nesse caso específico. Corte a string até chegar no número que você quer. 

Poderia utilizar os nomes das variáveis como uma chave de um dicionário por exemplo. Existem inumeras maneiras de resolver !

 

 

 

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta
Professor Jhonni S.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 11 meses
Contatar Jhonni

# Lê o arquivo de texto
with open('seuarquivo.txt', 'r') as arquivo:
    linhas = arquivo.readlines()

# Inicializa as variáveis
X = 0.0
Y = 0.0
Z = 0.0

# Itera sobre as linhas do arquivo e atribui os valores às variáveis
for linha in linhas:
    if linha.startswith('X'):
        X = float(linha.split('=')[1].strip())
    elif linha.startswith('Y'):
        Y = float(linha.split('=')[1].strip())
    elif linha.startswith('Z'):
        Z = float(linha.split('=')[1].strip())

# Agora você pode usar as variáveis normalmente
if X > 1:
    print("Variável X maior que 1")

if Y > 1:
    print("Variável Y maior que 1")

if Z > 1:
    print("Variável Z maior que 1")

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta
Professora Thalita S.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 1 mês
Contatar Thalita

O erro ocorre porque você está tentando acessar as variáveis `X`, `Y`, `Z` diretamente, mas elas não estão sendo definidas ou carregadas corretamente a partir do arquivo de texto. Quando você lê um arquivo, você recebe os dados como strings, e para usá-los como números (no caso, `float`), você precisa fazer a conversão apropriada.

Vou te dar um exemplo passo a passo para garantir que o seu programa leia corretamente as variáveis do arquivo de texto, converta-as para números e as avalie corretamente.

### Exemplo de Código

Vamos imaginar que você tem um arquivo de texto chamado **"variaveis.txt"**, com o seguinte conteúdo:

```
X=0.9
Y=1.5
Z=2.0
```

Agora, o objetivo é ler essas variáveis do arquivo e avaliá-las. Veja o código:

```python
# Função para ler e atribuir valores das variáveis X, Y, Z de um arquivo
def ler_variaveis_do_arquivo(nome_arquivo):
    variaveis = {}  # Dicionário para armazenar as variáveis
    with open(nome_arquivo, 'r') as arquivo:
        for linha in arquivo:
            # Divide a linha no sinal de igual
            chave, valor = linha.strip().split('=')
            # Converte o valor para float e armazena no dicionário
            variaveis[chave] = float(valor)
    return variaveis

# Lê as variáveis do arquivo
variaveis = ler_variaveis_do_arquivo('variaveis.txt')

# Acessa as variáveis X, Y e Z
X = variaveis['X']
Y = variaveis['Y']
Z = variaveis['Z']

# Avalia se X é maior que 1
if X > 1:
    print("Variável X maior que 1")

# Avalia se Y é maior que 1
if Y > 1:
    print("Variável Y maior que 1")

# Avalia se Z é maior que 1
if Z > 1:
    print("Variável Z maior que 1")
```

### Explicação:

1. **Função `ler_variaveis_do_arquivo`**:
   - A função abre o arquivo e lê linha por linha.
   - Cada linha é dividida pelo sinal de igual (`=`) para separar o nome da variável e o valor.
   - O valor é convertido para `float` para poder ser comparado numericamente e armazenado em um dicionário (`variaveis`).

2. **Leitura das variáveis**:
   - Após ler os dados, as variáveis `X`, `Y` e `Z` são recuperadas do dicionário e atribuídas às variáveis correspondentes.

3. **Avaliação das variáveis**:
   - O código realiza a comparação (`X > 1`, `Y > 1`, `Z > 1`) e imprime uma mensagem quando a condição é atendida.

### O que deve acontecer:

Se o arquivo `variaveis.txt` contiver os valores que você forneceu (`X=0.9`, `Y=1.5`, `Z=2.0`), a saída será:

```
Variável Y maior que 1
Variável Z maior que 1
```

### Como garantir que tudo funcione:

- **Formato do arquivo**: O arquivo de texto deve ter o formato correto, como `X=0.9`, `Y=1.5`, `Z=2.0`, sem espaços extras antes ou depois dos valores.
- **Conversão para float**: Como as variáveis são armazenadas como texto no arquivo, você deve garantir que os valores sejam convertidos para `float` para permitir a comparação numérica.
- **Verificação de existência da chave**: Caso você queira garantir que a chave existe no dicionário antes de acessá-la, pode usar `variaveis.get('X', default_value)` para evitar erros se alguma chave estiver faltando no arquivo.

Se precisar de mais alguma ajuda ou se houver mais detalhes sobre o seu código, estou à disposição!

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta
Minerva IA
do Profes
Respostas na hora
100% no WhatsApp
Envie suas dúvidas pelo App. Baixe agora
Precisa de outra solução? Conheça
Aulas particulares Encontre um professor para combinar e agendar aulas particulares Buscar professor