0

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から実行してから何が問題になるのか疑問に思います。参考までに、Python2.7.3を使用しています。

4

3 に答える 3

1

sys名から参照するため、stdoutオブジェクトだけでなくsysモジュールをインポートする必要があります。

import sys

それ以外の場合は、次のように呼び出すように変更する必要があります。

stdout.write("foo")

または、カンマを指定した印刷コマンドを使用して、改行を抑制します。

print "foo",
于 2012-12-19T02:39:43.103 に答える
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"
于 2012-12-19T03:26:09.350 に答える
0

1行に4桁の数字を100行印刷する場合は、次を使用できます。

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" 
于 2012-12-19T03:11:01.680 に答える