问题
I\'ve started programming today and have this issue with Python. It\'s pretty dumb but I can\'t figure out how to do it. When I use the print command, it prints whatever I want and then goes to a different line. For example:
print \"this should be\"; print \"on the same line\"
Should return:
this should be on the same line
but instead returns:
this should be
on the same line
More precisely I was trying to create a program with if
that told me whether a number was a 2 or not
def test2(x):
if x == 2:
print \"Yeah bro, that\'s tottaly a two\"
else:
print \"Nope, that is not a two. That is a (x)\"
But it doesn\'t recognise the last (x)
as the value entered, and rather prints exactly: \"(x)\" (the letter with the brackets). To make it work I have to write:
print \"Nope, that is not a two. That is a\"; print (x)
And if e.g. I enter test2(3)
that gives:
Nope, that is not a two, that is a
3
So either i need to make Python recognise my (x) inside a print line as the number; or to print two separate things but on the same line. Thanks in advance and sorry for such a stupid question.
IMPORTANT NOTE: I am using version 2.5.4
Another note: If i put print \"Thing\" , print \"Thing2\"
it says \"Syntax error\" on the 2nd print.
回答1:
In Python 3.x, you can use the end
argument to the print()
function to prevent a newline character from being printed:
print("Nope, that is not a two. That is a", end="")
In Python 2.x, you can use a trailing comma:
print "this should be",
print "on the same line"
You don't need this to simply print a variable, though:
print "Nope, that is not a two. That is a", x
Note that the trailing comma still results in a space being printed at the end of the line, i.e. it's equivalent to using end=" "
in Python 3. To suppress the space character as well, you can either use
from __future__ import print_function
to get access to the Python 3 print function or use sys.stdout.write()
.
回答2:
In Python 2.x just put a ,
at the end of your print
statement. If you want to avoid the blank space that print
puts between items, use sys.stdout.write
.
import sys
sys.stdout.write('hi there')
sys.stdout.write('Bob here.')
yields:
hi thereBob here.
Note that there is no newline or blank space between the two strings.
In Python 3.x, with its print() function, you can just say
print('this is a string', end="")
print(' and this is on the same line')
and get:
this is a string and this is on the same line
There is also a parameter called sep
that you can set in print with Python 3.x to control how adjoining strings will be separated (or not depending on the value assigned to sep
)
E.g.,
Python 2.x
print 'hi', 'there'
gives
hi there
Python 3.x
print('hi', 'there', sep='')
gives
hithere
回答3:
If you're using Python 2.5, this won't work, but for people using 2.6 or 2.7, try
from __future__ import print_function
print("abcd", end='')
print("efg")
results in
abcdefg
For those using 3.x, this is already built-in.
回答4:
You simply need to do:
print 'lakjdfljsdf', # trailing comma
However in:
print 'lkajdlfjasd', 'ljkadfljasf'
There is implicit whitespace (ie ' '
).
You also have the option of:
import sys
sys.stdout.write('some data here without a new line')
回答5:
Utilize a trailing comma to prevent a new line from being presented:
print "this should be"; print "on the same line"
Should be:
print "this should be", "on the same line"
In addition, you can just attach the variable being passed to the end of the desired string by:
print "Nope, that is not a two. That is a", x
You can also use:
print "Nope, that is not a two. That is a %d" % x #assuming x is always an int
You can access additional documentation regarding string formatting utilizing the %
operator (modulo).
来源:https://stackoverflow.com/questions/11266068/python-avoid-new-line-with-print-command