Pergunta
· jan 9, 2023

Testes Python

Olá pessoal,

Estou fazendo alguns testes com Python + IRIS e me deparei com uma situação de retorno de erro.

ClassMethod WhileTest() [ Language = python ]
{
venda input("Registre um produto ou vazio para sair: ")
vendas []

while venda != "":
        vendas.append(venda)
        venda input("\nRegistre um produto ou vazio para sair: ")

print("\nOs produtos cadastrados foram: {}".format(vendas))
}

Ao executar esse código, tenho o retorno de erro abaixo quando sai do while:

<THROW> *%Exception.PythonException <THROW> 230 ^^0^D ##CLASS(CursoPython.Repeticao).WhileTest() <class 'EOFError'>: EOF when reading a line -

Executando o mesmo código diretamente no Python não recebo esse erro.

 

Alguém mais está trabalhando com Python + IRIS e sabe me dizer o que pode ser esse erro?

 

Obrigado.

Product version: IRIS 2022.1
$ZV: IRIS for Windows (x86-64) 2022.1 (Build 209U) Tue May 31 2022 12:16:40 EDT
Discussão (3)1
Entre ou crie uma conta para continuar

Esse erro acontece devido ao seu input voltar vazio, ele entende como erro.
Isso não acontece com diretamente no Python porque o input é nativo, esse erro é comum quando você utiliza inputs que são "built-in" (IDEs).

Uma forma de resolver seria tratando o erro, fazendo que quando ele ocorra o loop acabe:

ClassMethod WhileTest() [ Language = python ]
{
venda = input("Registre um produto ou vazio para sair: ")
vendas = []

while venda != "" :
	try:
		vendas.append(venda)
		venda = input("\nRegistre um produto ou vazio para sair: ")
	except EOFError:
		break

print("\nOs produtos cadastrados foram: {}".format(vendas))
}

Alguns testes que estou realizando com o Python encontrei alguns problemas parecidos e algo que notei no seu código seria o uso do print como saída final, o print não lhe será útil para retornar para o Iris creio a substituição dele por um return será mais efetivo.

O seu print irá imprimir como uma lista tudo que foi insirido no array vendas, se for para tratar essa váriavel externamente creio que será nescessário algumas modificações, mas irá funcionar.