2017-05-05 2 views
0

Je suis en train de résoudre un problème en utilisant le code suivant:EOF lors de la lecture d'une ligne sur le site concurrentiel, à savoir le code chef

X,Y = map(float, input().split()) 

if X < Y and not X % 5: 
    print(Y - X - 0.50) 
else: 
    print(Y) 

Ce code me donne la sortie désirée lorsque j'exécution à l'aide IDLE. Cependant, lorsque je tente d'exécuter ce code à l'aide d'un interprète fourni par un site de programmation compétitive, je reçois l'erreur suivante:

Traceback (most recent call last): 
    File "./prog.py", line 1, in <module> 
EOFError: EOF when reading a line 

J'ai essayé de lire les réponses d'autres questions similaires, mais aucun d'entre eux ne semblait fonctionner dans mon Cas.

+0

Peut-être que l'interprète ne passe aucune information à stdin, de sorte que votre appel 'input' ne parvient pas à obtenir quoi que ce soit. Etes-vous sûr que vous êtes censé recevoir X et Y en entrée? Peut-être qu'ils sont en fait des arguments de ligne de commande ou quelque chose. Quel site Web de programmation compétitive est-ce, spécifiquement? – Kevin

+0

Sans avoir d'échantillons réels du problème, c'est difficile à dire. Essayez de déboguer ceci en découplant votre processus d'entrée: saisissez une ligne d'entrée, vérifiez son contenu pour la validité, imprimez la ligne, etc. Voir quel type d'entrée bloque votre programme. Cela peut être aussi simple que de reconnaître une ligne nulle à la fin du fichier. – Prune

+0

Quelle est la fonction appelée 'input()'? est-ce censé être le standard python 3.x ['input()'] (https://docs.python.org/3/library/functions.html?highlight=input#input)? peut-être besoin d'extraire cette ligne, et d'abord 'user_input = input(). split()' et obtenir le résultat en premier, puis passer cette entrée utilisateur dans 'map (float, user_input)' – davedwards

Répondre

0

Le site de programmation concurrentiel est en cours d'exécution probablement python 2. Python 2 traite input() différemment que python 3.

Vous devriez plutôt utiliser raw_input() que input().

De la documentation:

raw_input() reads a line from input, converts it to a string (stripping a trailing newline), and returns that.

Votre problème peut être expliqué à partir de ce qui a été expliqué here:

In Python 2, raw_input() returns a string, and input() tries to run the input as a Python expression.

+0

Vous pouvez choisir la langue dans laquelle l'exécuter. Donc, non, ce n'est pas le problème. Je l'exécute explicitement en python 3.4 – user3632345

+0

Fournissez-vous l'entrée en utilisant la fonction "entrée personnalisée" sur codechef? Je n'ai pas rencontré de problème en fournissant: '1 2' – Hafager

+0

personnalisé fonctionne très bien. Juste pas leur entrée. Pour référence utiliser le code de problème HS08TEST dans le compilateur – user3632345

0

autre regard sur la page codechef. Notez la case à cocher marquée "Entrée personnalisée". Avec cette cochée/cochée une boîte de texte s'ouvrira où vous pouvez mettre vos lignes d'entrée.

codechef image