Hello, Yesterday, I was at a programming competition. We programmed on Linux liveCD's and Python was one of the allowed languages (among C and Java). I cared just about the algorithmic approach so I used Python. One of the main rules is, that the code reads its standard input and dumps the result on the standard output. Here happened my bigger programming mistake ever - I used the following approach :
==== import sys print sys.stdout.readlines() # TYPO ! stdin != stdout ==== So the WEIRD issue is, that it worked and, executing the following code I get : ==== [EMAIL PROTECTED] ~ $ python la.py test test #2 ['test \n', 'test #2\n'] [EMAIL PROTECTED] ~ $ ==== Ok, as the algorithm worked perfectly, and all the test cases we were given were positive, I've continued with the next problem, copy/ pasting the above idiom... When they tested the code, they used file redirection like : == python la.py < /somefile == And, my code resulted in no output/input (=> 0 points), which can be proved here too : ==== [EMAIL PROTECTED] ~ $ python la.py < /etc/passwd === Some friend of mine told me that's the Unix way, (stdout can act like stdin) so I tried some C code : === 1 #include <stdio.h> 2 3 int main() { 4 char buf[120]; 5 while (fgets(buf, sizeof(buf), stdout) != NULL) { 6 puts(buf); 7 } 8 return 0; 9} === The code returns with no delay, so I'm really wondering where is that nice sys.{stdin,stdout} feature inplemented as pydoc doesn't mention anything. I'd spot the mistake before submitting the problem solutions if it was written in C :) Thanks! -- http://mail.python.org/mailman/listinfo/python-list