On Sun, Jun 2, 2013 at 6:12 PM, Fdama <fsd...@gmail.com> wrote: > Hi, > > I was following an exercise in a book when I edited the code and came > across something I did not get. Here is the relevant part of the code that > works: > > start=None #initialise > while start !="": > start=input("\nStart: ") > > if start: > start=int(start) > finish=int(input("Finish: ")) > > print("word[",start,":",finish,"] is", word[start:finish]) > > I then changed the code to this: > > start=None #initialise > while start !="": > start=int(input("\nStart: ")) > > if start: > > finish=int(input("Finish: ")) > > print("word[",start,":",finish,"] is", word[start:finish]) > > I combined the int conversion and the input on the same line, rather than > to have two different statements. But got an error message: > > Traceback (most recent call last): > File "C:\Users\Faisal\Documents\python\pizza_slicer.py", line 23, in > <module> > start=int(input("\nStart: ")) > ValueError: invalid literal for int() with base 10: '' >
Converting an empty string to base 10 doesn't fly, so if you hit a blank line on the input(), you get a bad conversion. In the first version, you're only converting to base 10 if the string is non-empty. In the second, you're attempting to convert irrespective. BTW, I'm partial to: if not start: continue ...but that's a stylistic thing.
-- http://mail.python.org/mailman/listinfo/python-list