- print is just being changed to a function (instead of a statement), it's not going away entirely. But for complete future compatibility I guess you would avoid it.
- I don't think you will ever get the prompt as part of the input unless the user actually types it
- You can strip the trailing newline easily


So here is my version:

import sys
def my_raw_input(prompt):
  sys.stdout.write(prompt)
  value = sys.stdin.readline()[:-1]
  return value

BTW, this is an interesting exercise but I wouldn't actually code this way. Python 3.0 is a long ways off and Python 2.x isn't going to go away when 3.0 arrives. (You can still download six-year-old Python 1.5.2 from python.org!)

Here is a quote from a report of Guido van Rossum's keynote speech last week at PyCon:
"Guido started talking about Python 3000 in 2000. He said he always imagined it as a release that was three years off, and it still feels that way."
http://pycon.blogspot.com/


I don't need raw_input() much in my code, but I use print without a second 
thought.

Kent

Jacob S. wrote:
Try this.

import sys

def my_raw_input(prompt):
sys.stdout.write(prompt) ## Since they're thinking of bonking off print as well.
a = sys.stdin.readline()
if a.startswith(prompt):
return a[:len(prompt)]
return a


It leaves the '\n' on the end... so it sucks.

I know there is a better way... Someone else-help?

Jacob

So, as a newbie, I see this thread and I check out the PEP and I see
that for future compatibility we should use sys.stdin.readline().  So
I import sys to see how it works.  Of course, sys.stdin.readline('type
anything: ') doesn't work in quite the same way as raw_input('type
anything: ') does.  The closest I can get after a few newbie stabs is:

print 'type anything: ', sys.stdin.readline()

type anything: hello hello



What is the easiest way to get the exact functionality of raw_input() (i.e. a prompt, no whitespace at the front, and no trailing \n) using sys.stdin.readline()?

gabe


On Fri, Mar 25, 2005 at 11:02:43AM -0500, Jacob S. wrote:

Yeah. And they're thinking of removing raw_input() too. I think it's good
to have a __builtin__ user input function. Why should we have to import
sys everytime we want user input? Almost every program that newbies write
uses it, and advanced programmers also if they're using console programs.
IMHO, I see no reason to remove it.
## end rant


Jacob


>Michael Dunn wrote:
>>Something I've always wondered: if input() is so dangerous, why is it
>>there? What valid uses does it have in the wild?
>
>It's a mistake planned to be removed in Python 3.0, the "hypothetical
>future release of Python that can break backwards compatibility with the
>existing body of Python code."
>
>Python tries very hard to maintain backward compatibility so things like
>input() are not removed.
>
>http://www.python.org/peps/pep-3000.html#built-ins
>
>Kent
>
>_______________________________________________
>Tutor maillist - Tutor@python.org
>http://mail.python.org/mailman/listinfo/tutor
>
>


_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor


_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor


_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor

Reply via email to