2017-05-11 19 views
-1

私はPythonには新しく学習目的のために小さなサイコロのゲームスクリプトを作成しました。スクリプトの出力にはサイコロとロール数。Python I/OエラーValueError:クローズファイルの入出力操作

小さな数字では10個のロールなどで5個のサイコロと書いてありますが、テストでは999個のサイコロを999個のロールに渡しました.1億のレコードが返されますが、エラーが発生しました。感謝しています。

Pythonでプログラムの一貫性をテストする方法やベンチマークを定義する方法はありますか?

#! python 
import random 
diceno = int(raw_input("Please enter # of dice (an integer): ")) 
rollno = int(raw_input("Please enter # of rolls (an integer): ")) 
min = 1 
max = 6 
#checks 
if diceno < 0 or diceno == 0: 
     print 'No dice to roll' 
elif rollno < 0 or rollno == 0: 
     print 'No rolling' 
else: 
     print '=======================================' 

for rollid in range(0, rollno): 
    for diceid in range(0, diceno): 
     print 'Roll #', rollid+1, 'Dice #', diceid+1,'->', random.randrange(min,max,1) 

サンプル出力

Please enter # of dice (an integer): 2 

Please enter # of rolls (an integer): 2 
======================================= 
Roll # 1 Dice # 1 -> 5 
Roll # 1 Dice # 2 -> 4 
Roll # 2 Dice # 1 -> 4 
Roll # 2 Dice # 2 -> 2 

エラー注:

Roll # 79 Dice # 240 Traceback (most recent call last):

File "", line 1, in runfile('C:/Users/Niru/Documents/Python Scripts/diceroller.py', wdir='C:/Users/Niru/Documents/Python Scripts')

File "C:\Anaconda2\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 699, in runfile execfile(filename, namespace)

File "C:\Anaconda2\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 74, in execfile exec(compile(scripttext, filename, 'exec'), glob, loc)

File "C:/Users/Niru/Documents/Python Scripts/diceroller.py", line 17, in print 'Roll #', rollid+1, 'Dice #', diceid+1,'->', random.randrange(min,max,1)

File "C:\Anaconda2\lib\site-packages\ipykernel\iostream.py", line 317, in write self._buffer.write(string)

ValueError: I/O operation on closed file

+2

出力は質問に属し、コメントではありません。 – Prune

+3

あなたのエラーは、ファイルに対するI/O操作ですが、あなたのコードにはファイル操作はありません。ファイルI/Oを実行するコードの一部がありますか? –

+0

また、完全なエラーメッセージを出力する必要があります。出力のすぐ上に数行の出力があります。 999、999を入力として、コードはうまく動作します。 – Prune

答えて

0

ほとんどのcdarkeにより示唆されるように誤差が、原因使用しているスパイダーIDEの制限のために実際にありますニル。 Spyder(2.3.9)の古いバージョンでコードを実行したときと同じエラーが表示されます。しかし、Spyder(3.1.4)の最新バージョンを使用しても、エラーは発生しません。

最新のSpyder IDEバージョンにアップグレードすることをお勧めします。

+0

アップグレードされます!ありがとう! – Niru

0

エラーはAnaconda IDE Spyder/Ipythonコンソールの実行制限に起因しています。スクリプトは正常に実行されます。

ありがとう!

関連する問題