问题在题目里。
我想用python来做。在这个c语言的例子中,我想做的是:
1 2 3 4 5 6 7 | #include <stdio.h> int main() { int i; for (i=0; i<10; i++) printf("."); return 0; } |
输出:
1 | .......... |
在Python中:
1 2 3 4 5 6 7 8 9 10 11 12 13 | >>> for i in xrange(0,10): print '.' . . . . . . . . . . >>> for i in xrange(0,10): print '.', . . . . . . . . . . |
在Python中
一般方式
1 2 | import sys sys.stdout.write('.') |
你也可能需要打电话
1 | sys.stdout.flush() |
确保立即刷新
从python2.6中,你可以从python3中导入
1 | from __future__ import print_function |
这允许您使用下面的python3解决方案。
Python 3在python3中,
1 | print('.', end='') |
如果您使用了
如果您在缓冲方面有问题,可以通过添加
1 | print('.', end='', flush=True) |
但是,请注意,Python 2中从
来源https://docs.python.org/2/library/functions.html#printhttps://docs.python.org/2/library/__future__.htmlhttps://docs.python.org/3/library/functions.html#print
它应该像Guido Van Rossum在这个链接中描述的那样简单:
回复:没有c/r怎么打印?
http://legacy.python.org/search/hypermail/python-1992/0115.html
Is it possible to print something but not automatically have a
carriage return appended to it ?
是的,在要打印的最后一个参数后面添加逗号。例如,这个循环输出数字0..用空格隔开的一行。请注意添加最后换行的无参数"print":
1 2 3 4 5 6 7 | >>> for i in range(10): ... print i, ... else: ... 0 1 2 3 4 5 6 7 8 9 >>> |
注意:这个问题的标题曾经类似于"如何在python中打印f ?"
由于人们可能会根据标题来这里寻找它,Python还支持printf样式的替换:
1 2 3 4 5 6 7 8 | >>> strings = ["one","two","three" ] >>> >>> for i in xrange(3): ... print"Item %d: %s" % (i, strings[i]) ... Item 0: one Item 1: two Item 2: three |
而且,您可以方便地将字符串值相乘:
1 2 | >>> print"." * 10 .......... |
为python2.6+使用python3风格的打印函数(也会破坏同一文件中任何现有的关键字打印语句)。
1 2 3 4 | # for python2 to use the print() function, removing the print keyword from __future__ import print_function for x in xrange(10): print('.', end='') |
为了不破坏您所有的python2打印关键字,创建一个单独的
1 2 3 4 5 6 | # printf.py from __future__ import print_function def printf(str, *args): print(str % args, end='') |
然后,在您的文件中使用它
1 2 3 4 5 | from printf import printf for x in xrange(10): printf('.') print 'done' #..........done |
更多显示printf样式的示例
1 2 3 | printf('hello %s', 'world') printf('%i %f', 10, 3.14) #hello world10 3.140000 |
这不是题目中问题的答案,而是如何在同一行打印的答案:
1 2 3 4 | import sys for i in xrange(0,10): sys.stdout.write(".") sys.stdout.flush() |
新的(从Python 3.0开始)
使用functools。创建一个名为printf的新函数
1 2 3 4 5 6 7 | >>> import functools >>> printf = functools.partial(print, end="") >>> printf("Hello world ") Hello world |
用默认参数包装函数的简单方法。
您可以在
函数在python中自动生成一个新行。你可以试试:
您可以使用
1 | for i in range(10): print('.', end='') |
Python 3.6.1的代码
1 | for i in range(0,10): print('.' , end="") |
输出
1 2 | .......... >>> |
在python3中,打印是一个函数。当你打电话
1 | print ('hello world') |
Python把它翻译成
1 2 | print ('hello world', end = ' ') |
你可以把end改成任何你想要的。
1 2 | print ('hello world', end = '') print ('hello world', end = ' ') |
你可以尝试:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import sys import time # Keeps the initial message in buffer. sys.stdout.write(" foobar bar black sheep") sys.stdout.flush() # Wait 2 seconds time.sleep(2) # Replace the message with a new one. sys.stdout.write(" "+'hahahahaaa ') sys.stdout.flush() # Finalize the new message by printing a return carriage. sys.stdout.write(' ') |
我最近也有同样的问题。
我是这样解决的:
1 2 3 4 5 6 7 8 9 10 11 12 13 | import sys, os # reopen stdout with"newline=None". # in this mode, # input: accepts any newline character, outputs as ' ' # output: ' ' converts to os.linesep sys.stdout = os.fdopen(sys.stdout.fileno(),"w", newline=None) for i in range(1,10): print(i) |
这适用于unix和windows…还没有测试过macosx…
hth
您可以在python3中执行同样的操作,如下所示:
1 2 3 4 5 6 | #!usr/bin/python i = 0 while i<10 : print('.',end='') i = i+1 |
并使用
python 2.6 +:
1 2 | from __future__ import print_function # needs to be first statement in file print('.', end='') |
python 3:
1 | print('.', end='') |
python < = 2.5:
1 2 | import sys sys.stdout.write('.') |
如果每次打印后额外的空间是可以的,在python2中
1 | print '.', |
在python2中误导-避免:
1 2 3 4 5 | print('.'), # avoid this if you want to remain sane # this makes it look like print is a function but it is not # this is the `,` creating a tuple and the parentheses enclose an expression # to see the problem, try: print('.', 'x'), # this will print `('.', 'x') ` |
你会注意到上面所有的答案都是正确的。但我想做一个快捷方式,总是在末尾写入"end="参数。
你可以像这样定义一个函数
1 2 | def Print(*args,sep='',end='',file=None,flush=False): print(*args,sep=sep,end=end,file=file,flush=flush) |
它将接受所有参数的数量。甚至它将接受所有其他参数,如文件,刷新等,并具有相同的名称。
@lenooh回答了我的问题。我在搜索"python禁止换行"时发现了这篇文章。我在Raspberry Pi上使用IDLE3来开发用于PuTTY的Python 3.2。我想在PuTTY命令行上创建一个进度条。我不想让页面滚动。我想要一条水平线来再次向用户保证,程序不会停止运行,也不会被发送到一个愉快的无限循环中去吃午饭——这是在请求"别打扰我,我很好,但这可能需要一些时间。"交互式消息——就像文本中的进度条。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import sys page=1 search_string=input('Search for?',) print('Skimming for', search_string, '\b! .001', end='') sys.stdout.flush() # the print function with an end='' won't print unless forced while page: # some stuff… # search, scrub, and build bulk output list[], count items, # set done flag True page=page+1 #done flag set in 'some_stuff' sys.stdout.write('\b\b\b.'+format(page, '03')) #<-- here's the progress bar meat sys.stdout.flush() if done: #( flag alternative to break, exit or quit) print(' Sorting', item_count, 'items') page=0 # exits the 'while page' loop list.sort() for item_count in range(0, items) print(list[item_count]) #print footers here if not (len(list)==items): print('#error_handler') |
进度条肉在
这三个数字被擦除和重写是没有必要的——它只是一个繁荣的例子,
请注意,树莓派IDLE3 Python shell不支持退格?而是打印一个空格,创建一个明显的分数列表。
- (o = 8 >奇才
您想要在for循环中正确地打印一些东西,但是您不希望每次都在新行中打印…例如:
1 2 3 4 5 6 7 8 9 | for i in range (0,5): print"hi" OUTPUT: hi hi hi hi hi |
但你想这样打印:嗨,嗨,嗨,嗨,嗨,是吗?打印"hi"后加一个逗号
例子:
print"hi",
OUTPUT:
hi hi hi hi hi
其中许多答案似乎有点复杂。Python 3。你只要这样做,
1 | print(<expr>, <expr>, ..., <expr>, end="") |
end的默认值是""。我们只是将它更改为空格,或者也可以使用end=""。
1 | for i in xrange(0,10): print '.', |
这对你很有用。这里逗号(,)在打印后很重要。获得帮助:http://freecodeszone.blogspot.in/2016/11/how to print-in-python-without-newline.html
或具有如下功能:
1 2 | def Print(s): return sys.stdout.write(str(s)) |
然后现在:
1 2 | for i in range(10): # or `xrange` for python 2 version Print(i) |
输出:
1 | 0123456789 |
1 | for i in xrange(0,10): print '\b.', |
这在2.7.8和amp中都适用。2.5.2(分别为Canopy和OSX terminal)——不需要模块导入或时间旅行。
这是一种不插入换行符的一般打印方法。
Python 3
1 2 | for i in range(10): print('.',end = '') |
在python3中,实现起来非常简单
一般有两种方法:
在Python 3.x中打印时不需要换行
打印语句后不添加任何内容,使用
1 2 3 4 5 6 7 8 9 10 11 | >>> print('hello') hello # appending ' ' automatically >>> print('world') world # with previous ' ' world comes down # solution is: >>> print('hello', end='');print(' world'); # end with anything like end='-' or end="" but not ' ' hello world # it seem correct output |
另一个循环中的例子:
1 2 | for i in range(1,10): print(i, end='.') |
在Python 2.x中打印时不需要换行
添加一个逗号表示在打印之后忽略
1 2 | >>> print"hello",; print" world" hello world |
另一个循环中的例子:
1 2 | for i in range(1,10): print"{} .".format(i), |
希望这对你有帮助。你可以访问这个链接。
…您不需要导入任何库。只需使用删除字符:
1 2 | BS=u'\0008' # the unicode for"delete" character for i in range(10):print(BS+"."), |
这将删除换行和空格(^_^)*