我有一个基本代码,它只是简单地循环并在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
答案 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"