I am starting to learn Python with an online guide, and I just did an exercise that required me to write this script:
from sys import argv
script, filename = ar
I am just taking this course my self too for the first time and was wondering the same thing and this is what I figured out and got it to work with no issues. I am still learning this so if this is bad form let me know. Here is what I got to work for me.,
target.write("%s \n%s \n%s" % (line1,line2,line3))
I am currently following the same course, and the solution I found was similar to the one ninjagecko used, except I only used the things you were taught up to this point in the course. Mine looks like this:
from sys import argv
script, filename = argv
print "We're going to erase %s." % filename
print "If you don't want that, hit CTRL-C (^C)."
print "If you do want that, hit RETURN."
raw_input("?")
print "Opening the file..."
target = open(filename, 'w')
print "Truncating the file. Goodbye!"
target.truncate()
print "Now I'm going to ask you for three lines."
lines = [raw_input("Lines %r :" % i) for i in range(1, 4)]
for line in lines:
target.write(line + "\n")
print "And finally, we close it."
target.close()
It took me awhile moving the parenthesis around and figuring out where to place the formatter and loop, but once I found it, it made perfect sense to me. One key thing to note is that my first attempt:
for i in range(1, 4):
lines = raw_input("Line %r :" % i)
Appears to work at first when you run the script, however when you review the target file it only writes the last line (line3) to the file. I'm still not entirely clear on why that is the case.
How about
target.write('%s \n %s \n %s' % (line1,line2,line3))
This does it in two lines. It puts the line you want to print in a variable so it's more readable
lb = "\n"
allOnOne= line1 + lb + line2 + lb+ line3 + lb
target.write(allOnOne)
For the purposes of "that specific study drill" question/problem in that specific guide, i believe the author would like...
target.write("%s\n%s\n%s\n" % (line1, line2, line3))
Although, Dave Webb certainly gets many many browny points for being thorough plus educational value too.
I think the intent was for the student to leverage what had been taught in previous lessons and arrive at the following as a solution:
print "Now I'm going to ask you for three lines."
line1 = raw_input("line 1: ")
line2 = raw_input("line 2: ")
line3 = raw_input("line 3: ")
print "I'm going to write these to the file."
target.write(line1 + '\n' + line2 + '\n' + line3 + '\n')
print "And finally, we close it."
target.close()