Python Forum

Full Version: How to prevent python from going to new line in for loop?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
For example, let's say I want to go through each character in a string and print it like this
for x in "Python":
    print(x)
This prints
P
y
t
h
o
n
How do I make it print this instead?
Python
My second question is when I print two variables how do I avoid printing the white space in between them? for example when I type this:
x = 5
y = 6
print(x, y)
it prints this
5 6
but I want it to print it like this with no white space in between the 5 and 6
56
Hi,

Check this

https://docs.python.org/3/library/functions.html#print

for x in "Python":
   ...:     print(x,end='')
print(x,y,sep='')
So basically every print automatically add \n to end that is reason why we see next line. But we can override this by setting end value.
Don't forget Python's built in help system. For example:
>>> help(print)
Output:
Help on built-in function print in module builtins: print(...) print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush the stream.
Shows that print() is pretty handy - can use to write to files, create an easy csv file (print to file and use sep=", "), use a newline or not, etc.
You can format what is printed. I like this as it gives me total control.
x, y = 5, 6
print(f"My numbers are ({x},{y})")
Output:
My numbers are (5,6)
As for printing multiple prints on one line, you can do that with stdout.write() and print(end=""), but I prefer not doing multiple prints.

This is a bit of code I extracted from a tic-tac-toe game. In uses str formatting and str joining to print out the tic-tac-toe board.
class Board():
    def __init__(self, board):
        self.board = list(board)

    def __str__(self):
        rows = [f" {self.board[i]} | {self.board[i+1]} | {self.board[i+2]}" for i in range(0, 9, 3)]
        return "\n---+---+---\n".join(rows)

winner = "O"
ttt = Board("OX  OXX O")
print(f" The winner is {winner}\n\n{ttt}")
Output:
The winner is O O | X | ---+---+--- | O | X ---+---+--- X | | O
By making the entire board a str it is easy to ask the where to place the next "X".
pos = input(f"{board}\n {player}: ")