EOF problem with ENTER
Francesco Bochicchio
bieffe62 at gmail.com
Fri Jun 12 03:56:04 EDT 2009
On 12 Giu, 08:49, Prasoon <prasoonthegr... at gmail.com> wrote:
> On Jun 12, 11:28 am, Chris Rebert <c... at rebertia.com> wrote:
>
>
>
>
>
> > On Thu, Jun 11, 2009 at 11:17 PM, Prasoon<prasoonthegr... at gmail.com> wrote:
> > > I am new to python....
> > > I have written the following program in python.It is the solution of
> > > problem ETF in SPOJ.....
>
> > > #Euler Totient Function
>
> > > from math import sqrt
> > > def etf(n):
> > > i,res =2,n
> > > while(i*i<=n):
> > > if(n%i==0):
> > > res-=res/i
> > > while(n%i==0):
> > > n/=i
> > > i+=1
> > > if(n>1):
> > > res-=res/n
> > > return res
>
> > > def main():
> > > t=input()
> > > while(t):
> > > x=input()
> > > print str(etf(x))
> > > t-=1
>
> > > if __name__ == "__main__":
> > > main()
>
> > > The problem with my code is that whenever I press an extra "Enter"
> > > button instead of getting the cursor moved to the next line.....I get
> > > an error
>
> > > _SyntaxError- EOF while parsing and the program terminates.........._
>
> > > How should the code be modified so that even after pressing an extra
> > > "Enter" button the cursor get moved to the next line instead to
> > > throwing an exception......
>
> > Use raw_input() instead of input() [at least until you switch to Python 3.x].
> > input() does an implicit eval() of the keyboard input, which is (in
> > part) causing your problem.
> > Note that you'll need to explicitly convert the string raw_input()
> > reads in using either int() or float() as appropriate.
>
> > Still, you can't just enter extra lines and expect the program to
> > automatically ignore them. You'll have to write the extra code
> > yourself to handle empty input from the user.
>
> > Cheers,
> > Chris
> > --http://blog.rebertia.com
>
> I am using Python 2.6
> I have modified that code
> def main():
> t=int(raw_input())
> while(t):
> x=int(raw_input())
> print str(etf(x))
> t-=1
>
> what should i do to handle new line and space......
> We used to get spaces and newline in C using their ASCII values ...can
> similar things be done here???
>
> Please write the code snippet(by modifying my code) from which i can
> understand something......!!!!!
>
> - Mostra testo citato -
You could do:
while True:
x = raw_input("Enter x=>")
if x != "" : break # if you just press enter, raw_input returns an
empty string
Note that this still leaves out the case when you type something which
is not a number.
To cover this case, supposing that you need a float, you could do like
this (NOT TESTED):
while True:
x_str = raw_input("Enter x=>")
if x_str != "" : # to prevent having the error message on empty
imput
try:
x = float(x_str)
break # if it gets here the conversion in float was succesful
except ValueError :
print "The input '%s' cannot be converted in float" % x_str
This code exits from the loop only when you supply a string that
represents a floating number
Ciao
-----
FB
More information about the Python-list
mailing list