Boa noite, programadores.
Estou desenvolvendo programas para cálculo numérico e preciso gerar valores para uma lista. O exemplo hard-coded abaixo funciona perfeitamente:
x_inicial = -5
x_final = 5
parOrdenado = []
for x in range(x_inicial, x_final+1):
parOrdenado.append(x**2-5*x+6) # Aqui funciona
for valores in parOrdenado:
print(x_inicial,valores)
x_inicial+=1
O problema acontece quando digito a equação pela linha de comando, ou seja, o programa recebe a equação, o valor inicial e valor final de forma parametrizada. O problema é que em vez de calcular os valores, a lista armazena a mesma equação.
import sys
def main():
x_inicial = int(sys.argv[1])
x_final = int(sys.argv[2])
equacao = sys.argv[3]
calcula(x_inicial, x_final, equacao)
def calcula(x_inicial, x_final, equacao):
parOrdenado = []
for x in range(x_inicial, x_final+1):
parOrdenado.append(equacao) # Não funciona
for valor in parOrdenado:
print(x_inicial, valor)
x_inicial+=1
if __name__ == "__main__":
main()
Aqui está a saída ao executar o último código:
C:\estudos\microsoft learn>parOrdenadoLineCommand.py -2 2 x**2-5*x+6
-2 x**2-5*x+6
-1 x**2-5*x+6
0 x**2-5*x+6
1 x**2-5*x+6
2 x**2-5*x+6
Ao usar type(parOrdenado) retorna que trata-se de uma string. Já tentei usar
parOrdenado.append(float(equacao)) e retorna erro.
O que deve ser feito para o Python entender que a lista deve armazenar os valores calculados?
Agradeço pela atenção.
Murilo Fujita
15/01/2024