python不带回车print方法

python里面的print方法默认都带回车,如果想不带回车怎么整呢?C语言可以这么搞:

#include <stdio.h> 
int main() { 
    int i; 
    for (i=0; i<10; i++) printf("."); 
    return 0; 
} 

python里面就不一样了:

>>> for i in range(10): print('.') 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
>>> print('.', '.', '.', '.', '.', '.', '.', '.', '.', '.') 
. . . . . . . . . . 

怎么让python的print不打印回车呢?这里有几个方法。

python3+:

现在python几乎已经都更新到python3了,在python3里,print有两个参数可以控制分隔符和结尾符sep和end,例如:

>>> for i in range(10): 
...   print(i, end='') 
... 
0123456789>>> 

如果有多个对象,可以用sep分隔:

>>> print(1,2,3,sep='#',end='\n') 
1#2#3 
>>> 

Python 2.6 and 2.7

在python2.6和python2.7,你可以用下面的语句使用python3的print函数,之后就有sep和end参数了:

from __future__ import print_function 

但是flush参数只会在python3里面生效。或者可以使用sys.stdout.write()函数:

python3+行为:

>>> import sys 
>>> for i in range(10): 
...   sys.stdout.write(i) 
... 
Traceback (most recent call last): 
  File "<stdin>", line 2, in <module> 
TypeError: write() argument must be str, not int 
>>> for i in range(10):   
...   sys.stdout.write(str(i)) 
... 
01 
11 
21 
31 
41 
51 
61 
71 
81 
91 
>>> for i in range(10):        
...   sys.stdout.write(str(i)) 
...   sys.stdout.flush() 
... 
01 
11 
21 
31 
41 
51 
61 
71 
81 
91 
>>> 

python2行为:

>>> import sys 
>>> for i in range(10): 
...   sys.stdout.write(str(i)) 
... 
0123456789>>> 

如果中间需要加空格,有个更简便的方法,加逗号:

>>> for i in range(10): 
...   print i, 
... 
0 1 2 3 4 5 6 7 8 9 
>>> 
>>> for i in range(10): 
...     print i, 
... else: 
...     print 
... 
0 1 2 3 4 5 6 7 8 9 
>>> 

在python3+上,如果想让print函数每次打印都不带回车,可以用partial去包装一下:

>>> import functools 
>>> printf = functools.partial(print, end="") 
>>> printf("Hello world\n") 
Hello world 

参考链接:https://stackoverflow.com/questions/493386/how-to-print-without-newline-or-space/493399#493399

7 views

©2020 by EasyCSTech. Special thanks to IPinfo​ and EasyNote.