TransWikia.com

EOFError: EOF when reading a line

Stack Overflow em Português Asked by Bilbo on January 2, 2022

Eu estou fazendo um programa que é uma resolução dessa questão da Olimpíada de Informática.

A, B, C = input("A").split(), input("B").split(), input("C").split()
A, B, C = int(A[0]), int(B[0]), int(C[0])
if A >= 1 and A <= 300 and B >= 1 and B<= 300 and C >= 1 and C <= 300 : 
    pass
else :
    raise ValueError("Deu Erro")


H, L= int (input("Qual a altura")), int (input("Qual a Largura"))#dimensões da porta
if H >= 1 and H <= 250 and L >= 1 and L <= 250 :
    pass
else:
    raise ValueError("Deu Erro")

if (A and B) > (H and L) or (A and C) > (H and L) or (B and C) > (H and L):
    print ("N")
else :
    print("S")

Ele ainda tem muitas falhas, mas ao rodar ele não estou tendo o erro:

EOFError: EOF when reading a line

Quando coloco pra corrigir ele, estou. Eu queria saber o porquê disso.

2 Answers

Esta questão que tem como título Colchão, foi inicialmente disponibilizada pela OBI de 2012 e posteriormente, disponibilizada por Uri Online Judge, com o mesmo título, Colchão, e com a numeração 2409 da categoria AD-HOC.

Como é de se perceber, a questão nos pede para verificar se dada as dimensões de um colchão, dizer se o mesmo consegue ou não passar pela porta, com uma de suas faces, paralela ao chão.

Observe que a questão diz, que o colchão deve passar pela porta com uma de suas faces paralela ao chão. Além disso, nos diz que as dimensões do colchão são (1 <= A, B, C <= 300) e também, as dimensões da porta são (1 <= H, L <= 250).

Para resolver esta questão corretamente devemos perceber que como a dimensão máxima do colchão é 300 e a dimensão máxima da porta é 250 e que também, o colchão sempre passará pela porta com uma de suas faces paralela ao chão, devemos implementar o seguinte algoritmo...

colchao = sorted(list(map(int, input().split())))
porta = sorted(list(map(int, input().split())))

if (colchao[0] <= porta[0]) and (colchao[1] <= porta[1]):
    print('S')
else:
    print('N')

Veja o funcionamento do algoritmo no repl.it.

Observe que, quando este algoritmo é executado, a tela fica limpa aguardando os valores das dimensões do colchão. Neste momento devemos, digitar todas as três dimensões do colchão, na mesma linha, separadas por apenas um espaço e pressionar Enter.

Depois que digitamos todas as dimensões do colchão, os valores são ordenados e armazenados dentro da lista colchao.

Em seguida inserimos as dimensões da porta tal como inserimos as do colchão.

Após pressionarmos a tecla enter o programa irá verificar se a menor dimensão do colchão é menor ou igual à menor dimensão da porta e, também, verificará se a dimensão intermediária do colchão (largura do colchão) é menor ou igual à maior dimensão da porta. Caso o resultado seja positivo, exibirá a mensagem S. Caso contrário, exibirá a mensagem N.

Esta questão já foi testada, submetida e devidamente aprovada no site URI sob a linguagem de programação Python 3.

Só para constar, esta questão levou apenas 0.036 s para ser executada no site do URI.

Answered by Solkarped on January 2, 2022

O código está um pouco confuso, e pelo que deu para ler no enunciado não deve pedir 3 entradas e quebrar em partes, deve ler uma entrada e quebrar (odeio isso, costuma dar problemas, mas vamos fazer o que o exercício pede). Depois deve pedir um dado para ser quebrado em duas partes. Curiosamente uma parte do código fez de um jeito e o outro de outro jeito, mas ambos errados de acordo com o demonstrado na página.

Deixei a exceção exposta assim embora isso não é um código bem feito, mas serve como exercício principalmente porque ele não pede para tratar adequadamente, mas tenha isso em mente.

entrada = input("A B C").split()
A, B, C = int(entrada[0]), int(entrada[1]), int(entrada[2])
if A >= 1 and A <= 300 and B >= 1 and B <= 300 and C >= 1 and C <= 300:
    pass
else:
    raise ValueError("Deu Erro")
entrada = input("Qual a altura e largura").split()
H, L = int(entrada[0]), int(entrada[1])
if H >= 1 and H <= 250 and L >= 1 and L <= 250:
    pass
else:
    raise ValueError("Deu Erro")
if (A and B) > (H and L) or (A and C) > (H and L) or (B and C) > (H and L):
    print ("N")
else:
    print("S")

Veja funcionando no ideone. E no repl.it. Também coloquei no GitHub para referência futura.

Answered by Maniero on January 2, 2022

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP