2016-04-30 8 views
0

私は正直に言うつもりです。私は何をしているのか分かりません。VicBotダイスローラー(Python 2.7)

私はVicBot(Python 2.7用)のようにしたいと思っていますが、xはdieの数であり、yはdieの面の数である "/ roll xdy"コマンドで "dice" 。

ので、より直接的に私は、x変数が≥y要求できるようにする必要があり、それらは

VicBotのすべてがここで見つけることができます「(変数)+(変数)=(合計)」と表示している:https://github.com/Vicyorus/VicBot

(ケースで、あなたは不思議に思った:私が終わった前に、私は偶然、この質問を投稿しました)

+0

私はコードの書式を改善するために編集しましたが、3番目の段落は実際には分かりませんでした。そのため、書式設定はちょっと変わっています。おそらく、あなたは "x変数≧y"の意味を明確にすることができます(具体的な例)? – Blckknght

+0

私は「サイコロ」の数を指しています。私はあなたが受け取ることができる最高の数に相関する「サイコロ」の面の数を指しています。したがって、 "2d6"または "2つの変数は6以下です"。選択された数字が3と6が "(変数1)+(変数2)=(合計)"が "3 + 6 = 9"と表示されているとしましょう。また、段落a私のポストのビット。 – Viper

+0

コンソールプログラムでこれを実行していた場合、問題の乱数部分をどのように処理するか知っていますか?つまり、問題のチャットボットの部分だけ、あるいは '3d6'の結果を計算することについてもっと混乱していますか?私は 'VicBot'について聞いたことがないし、大量のコードを読んで興味を持っているわけではありませんが、あなたが実際に尋ねていたものであれば、乱数に関する回答をまとめることができます。 – Blckknght

答えて

0

私はあなたのチャットボットについて多くを知らない、また私は本当にすべてのコードを通してあなたを掘るしたいです」あなたの質問にも含まれています(あなたが書いたコードがあれば、私には明らかではありません。ボット)。

私ができることは、ダイスの圧延物に取り組むことです。それはかなり簡単です。必要なのは、Pythonのrandomモジュールと、いくつかの文字列操作と書式設定コードだけです。

import random 

def roll_dice(dice_string): 
    """Parse a string like "3d6" and return a string showing the die rolls and their sum""" 
    number_of_dice, number_of_sides = map(int, dice_string.split("d")) 
    rolls = [random.randint(1, number_of_sides) for _ in range(number_of_dice)] 
    output_string = "{} = {}".format(" + ".join(map(str(rolls)), sum(rolls)) 
    return output_string 

出力例:

>>> roll_dice("5d6") 
'6 + 6 + 5 + 5 + 6 = 28' 
>>> roll_dice("5d6") 
'1 + 5 + 1 + 2 + 2 = 11' 
>>> roll_dice("3d100") 
'16 + 83 + 56 = 155' 
>>> roll_dice("1d20") 
'18 = 18' 

うまくいけば、コードはかなり自明です。関数内の4つのステートメントは、それぞれ入力の解析、要求された乱数の生成、出力用の文字列への書式設定、最後に文字列の返すという1つのことを行います。実際の乱数生成を行う2行目は、別々の関数(整数引数をとり、整数のリストを返す)として抽出するのに役立つかもしれません。