2017-08-26 9 views
0

Roll20.netのダイスローラーのようなスタンドアロンアプリケーションを作成しようとしていますが、シンプルで使い始めています。このプロジェクトは数ヶ月前に諦めた後も、出力するための最も基本的な形式さえも得られません。 プログラムは実行されますが、印刷時には出力が生成されません

import random 
from random import randint 

d20 = randint(1,20) 

str1 = "You rolled a " 
str2 = "Congrats Critical Hit" 
str3 = "Uh Oh, Critical Fail" 

def roll(d20): 
    roll(d20) 
    print (str1 + roll(d20)) 

    if (d20 == 1): 
     print (str3) 

    elif (d20 == 20): 
     print (str3) 

    else: 
     print ("") 

は、私はどちらかはプログラムが技術的に実行されることを意味している、完全に空白出力を得る、または私が「0x02A3B078で機能ロール」得るでしょうか私は何かが定義されていないという回答を得るでしょう。

これを解決するにはどうすればよいですか?

答えて

0
  1. あなたは関数を定義していますが、呼び出していませんか?プログラムの末尾に次の行を追加してください。

    roll(d20) 
    
  2. 自分の関数を内部で呼び出さないでください。これは、無限の再帰につながります。


はこのような何か何が必要です:

... 

def roll(d20): 
    print(str1, d20) 

    if d20 == 1: 
     print(str3)  
    elif d20 == 20: 
     print(str3) 

roll(d20) 

あなたのプログラムが対話したいですか? whileループを初期化して、ユーザーが再生に興味がある間は繰り返すことができます。

while True: 
    d20 = randint(1, 20) 
    roll(d20) 

    if input('Keep playing? ') not in {'y', 'Y'}: 
     break 
+0

ありがとう、私はあなたの提案を試みたが、私は "RecursionError:最大再帰深度を超過しました"というエラーを受け取りました。私はこの関数の外で関数を呼び出しているので分かりません。私はそのようなエラーを受け取るべきではありません。それとも私はちょうどこれが間違っているのですか? インタラクションについて、私の計画は、GUI内のボタンを押すことによってダイスローリング機能を呼び出すある時点でGUIを作成することでした。 – Tedwyn

+0

@Tedwynあなたは機能を複数回呼びます。私のコードをそのままコピーしましたか? –

+0

@Tedwyn私はこの問題を解決するために、私のコードワードをコピーして、あなたの更新されたソリューションを貼り付けることをお勧めします。 –

0

は、あなたが将来的に考慮に入れることが

import random 
from random import randint 

str1 = "You rolled a " 
str2 = "Congrats Critical Hit" 
str3 = "Uh Oh, Critical Fail" 

def roll(d20): 

    print (str1 + str(d20)) 

    if (d20 == 1): 
     print (str3) 

    elif (d20 == 20): 
     print (str3) 


num_of_rolls = 10  
while num_of_rolls: 
    d20 = randint(1,20) 
    roll(d20) 
    num_of_rolls -= 1 

いくつかのものことを試してみてください。あなたは関数を呼び出さなかった。 print("")に18:20のチャンスがあるため、出力が印刷されないことがあります。 (1,20)の範囲から始めてはなりません。可能であれば、(1,2)をテストし、printと入力してください。それがあなたの機能の中で起こっていることを確かめる唯一の方法です。必要がなければ、print("")は必要ありません。

+0

レスポンスいただきありがとうございます。テスト、大いに感謝しました – Tedwyn

+0

@Tedwyn問題ありません。がんばろう –

関連する問題