0

Hello there,

Currently doing some work for my coursework. I've noticed the "\n" is obviously the new line function or whatever you guys call it, but would you understand what I mean when I say it creates too much of a new line?

For example, I want the newline to do this:

*****
*****


Instead, in my coding it's producing this:

*****

*****

If I'm missing something I'll be very grateful if somebody could point it out! Thank you!

4
Contributors
10
Replies
11
Views
5 Years
Discussion Span
Last Post by AdampskiB
0

Use CODE tags and post your code.

Notice that print allways adds newline at end if you do not suppress it.

Edited by happygeek: fixed formatting

0

The print function by itself adds a newline at the end. I suspect you are doing something like this (though you showed no code, so I am guessing)

asterisks = '*'*5
print(asterisks+'\n')
print(asterisks+'\n')

This will work just fine without the explicit newline.

Of course if you want an embedded newline, you have to be explicit: print(asterisks+'\n'+asterisks) And if you are reading lines from a text file, they arrive with their newlines intact, so you need to bear that in mind.

Edited by griswolf: n/a

0

Right okay I'll show you what I've got, many thanks for the replies though!

def drawBlocks(a,b,c,d,height):
    a = a * "  "
    b = b * " *"
    c = c * "  "
    d = d * " *"
    print((a + b + c + d + "\n") * height) 

def drawLetterA():
    stars = drawBlocks(1,8,1,0,2)
    stars = drawBlocks(0,2,6,2,2)
    stars = drawBlocks(0,10,0,0,2)
    stars = drawBlocks(0,2,6,2,3)
0

lines 9 until 12 make it look like functions return something usefull, but they return only None.

Edited by pyTony: n/a

0

You're right, it's line 6 that I think is the issue... However if you run the code you'll notice my problem only occurs after each line of code (from 9-11), and I haven't used the print function? So I just assumed there was a different function from "\n" that would reduce the extra newline issue?

Edited by AdampskiB: n/a

0
from __future__ import print_function

def drawBlocks(a,b,c,d,height):
    print((a * "  " + b * " *" + c * "  " + d * " *" + "\n") * height, end='') 

def drawLetterA():
    drawBlocks(1,8,1,0,2)
    drawBlocks(0,2,6,2,2)
    drawBlocks(0,10,0,0,2)
    drawBlocks(0,2,6,2,3)

drawLetterA()

Output:

* * * * * * * *  
   * * * * * * * *  
 * *             * *
 * *             * *
 * * * * * * * * * *
 * * * * * * * * * *
 * *             * *
 * *             * *
 * *             * *

Edited by pyTony: n/a

0
from __future__ import print_function

def drawBlocks(a,b,c,d,height):
    print((a * "  " + b * " *" + c * "  " + d * " *" + "\n") * height, end='') 

def drawLetterA():
    drawBlocks(1,8,1,0,2)
    drawBlocks(0,2,6,2,2)
    drawBlocks(0,10,0,0,2)
    drawBlocks(0,2,6,2,3)

drawLetterA()

Why don't you post your output with your code ? It makes better posts. Here we must guess or run your code to see what it does.

Edited by Gribouillis: n/a

0

@Gribouillis - Sorry bud, you're right I should of. This is what I got:

* * * * * * * *  
   * * * * * * * *  

 * *             * *
 * *             * *

 * * * * * * * * * *
 * * * * * * * * * *

 * *             * *
 * *             * *
 * *             * *

Thanks to pyTony, I now have this:

* * * * * * * *  
   * * * * * * * *  
 * *             * *
 * *             * *
 * * * * * * * * * *
 * * * * * * * * * *
 * *             * *
 * *             * *
 * *             * *

So just to clarify, before I make this post as solved, the

end=''

suppresses any extra new line generated by the end of code or in the case, print function?

0

Yes, it's the syntax for py3k's print() function. In python 2, without the import, add a , at the end of the print statement to avoid the newline.

>>> if True:
...  print "hello",
...  print "world"
... 
hello world

Edited by Gribouillis: n/a

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.