在python中的同一行上打印

时间:2012-12-19 02:36:12

标签: python-2.7 terminal

我有一个基本代码,它只是简单地循环并在python中打印一些数字。我的问题是我需要一种不同的方式来打印我的输出,因为我希望它们在同一条线上。 (标准的python print语句只是在新行上打印东西)。在做了一些研究后,我发现我可以做这样的事情

    import random
from sys import stdout
    i= 0
    while i < 100:
        j = 0
        while j < 4:
            k =0
            while k < 4:
                sys.stdout.write(random.randint(0, 9))
                k += 1
            sys.stdout.write(" ") 
            j += 1   
        i += 1
        print "\n" 

当我使用IDLE运行它时,它就像魅力一样 - python的ide,我唯一的问题是每当我尝试从终端运行它时就会抱怨这个

    CallingCard $ python numGenerator.py 
Traceback (most recent call last):
  File "numGenerator.py", line 13, in <module>
    sys.stdout.write(random.randint(0, 9))
NameError: name 'sys' is not defined
CallingCard $ 

想知道从IDLE运行它可能会出现什么问题,仅供参考我使用的是python 2.7.3

3 个答案:

答案 0 :(得分:1)

您需要导入sys模块而不仅仅是stdout对象,因为您从sys名称引用它:

import sys

否则你必须修改你的调用,如:

stdout.write("foo")

或者只使用带逗号的打印命令来压制换行符。

print "foo",

答案 1 :(得分:1)

找到解决方案。深思熟虑有时有帮助 以下是代码

    i= 0
while i < 100:
    j = 0
    while j < 4:
        k =0
        while k < 4:
            sys.stdout.write("%s" % random.randint(0, 9))
            k += 1  
        sys.stdout.write(" ") 
        j += 1   
    i += 1
    print "\n"

答案 2 :(得分:0)

如果您打算每行打印100行四个4位数字,可以使用

from sys import stdout
....
stdout.write(str(random.randint(0, 9)))

虽然您仍然可以使用打印并使其与

之类的内容更加整洁
import random
from sys import stdout
i= 0
while i < 100:
    for j in range(4):
        print '%04d' % random.randint(0,10000),
   i += 1
   print "\n"