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
How about this? I used a for loop.
from sys import argv
script, filename = argv
print("We're going to erase %r." % filename)
print("If you don't want that, hit CTRL-C (^C).")
print("If you want that, hit RETURN.")
input("?")
print("Opening the file...")
target = open(filename, 'w')
print("Truncating the file. Goodbye!")
target.truncate()
print("Now I am going to ask you for three lines.")
line1 = input("line 1: ")
line2 = input("line 2: ")
line3 = input("line 3: ")
print("I'm going to write these to the file.")
for a in (line1, line2, line3):
target.write("\n")
target.close()
The guide is suggesting creating a single string and writing it out rather than callingwrite()
six time which seems like good advice.
You've got three options.
You could concatentate the strings together like this:
line1 + "\n" + line2 + "\n" + line3 + "\n"
or like this:
"\n".join(line1,line2,line3) + "\n"
You could use old string formatting to do it:
"%s\n%s\n%s\n" % (line1,line2,line3)
Finally, you could use the newer string formatting used in Python 3 and also available from Python 2.6:
"{0}\n{1}\n{2}\n".format(line1,line2,line3)
I'd recommend using the last method because it's the most powerful when you get the hang of it, which will give you:
target.write("{0}\n{1}\n{2}\n".format(line1,line2,line3))
I think they want you to use string concatenation:
target.write(line1 + "\n" + line2 + "\n" + line3 + "\n")
Much less readable, but you have only one target.write()
command
Original code is repetitive, and copy-pasting code is dangerous ( Why is "copy and paste" of code dangerous? ):
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)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")
Much shorter, can change it to 4+ lines just by changing one character:
print "Now I'm going to ask you for three lines."
lines = [raw_input("line {i}: ".format(i=i)) for i in range(1,4)]
print "I'm going to write these to the file."
for line in lines:
target.write(line+'\n')