2012-12-19 35 views
0

我有一個基本的代碼,只是簡單地循環,並在Python中打印一些數字。我的問題是我需要一種不同的方式來打印我的輸出,因爲我希望它們在同一行上。 (標準的python打印語句只是在新行上打印內容)。之後做一些研究,我發現我可以做這樣的事情打印Python中的同一行

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" 

這就像當我運行它使用空閒的魅力 - 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

回答

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" 
1

需要導入sys模塊,而不只是標準輸出的對象,因爲你請參考sys名稱:

import sys 

否則,你將不得不修改你叫這樣的:

stdout.write("foo") 

或者只是使用一個打印命令用逗號來剿一個換行符。

print "foo", 
+0

其實我知道打印作品,但我正在尋找一種方法來打印在同一行上。我嘗試導入系統,並沒有工作要麼 – tawheed

+1

我只是告訴過你。在最後加一個逗號,並在一行上打印。 – jdi

+0

使用'print'foo「,'(尾隨逗號)的方法是在每個打印值之間添加一個空格。 –

0

如果您沒有打算打印100行,每行4個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"