日々のいろいろ

日々を綴ったほとんど日記

Python サイコロの作り方

まえがき

Pythonにサイコロを振らせます。
書いてて長くなったのでDiscordのBotに組み込むのは後にします。

事前知識として

Pythonが導入できてれば、最悪コピペで動くので知識は特に必要ないです。

Python入れ方分からんわ!!って人はこれでも読んでください。

legendimposter.hatenablog.jp

環境

サイコロを作る

まず、本当にただ1~6の値をランダムに出力するサイコロを作ります。
これは2行で実装できます。
便利なライブラリがあるので、import randomで呼び出します。
その後random.randint(1,6)をプリントするだけです。
簡単すぎてビビりますね。

import rondom
print(rondom.randint(1,6))

出力する値の範囲を指定できるサイコロを作る

サイコロを使うタイミングが今の所ないので正直1~6でも問題ないし、そもそも1~6以外が出力されるものはサイコロなのかどうかすら分からないけど、とりあえず実装してみよう。

import random
def saikoro(min,max):
    return random.randint(min,max)
print('最小値を入力してください')
min = int(input())
while min < 0:
    print('0以上の値を入力してください')
    min = int(input())
print('最大値を入力してください')
max = int(input())
while min >= max:
    print('最大値を入力してください')
    max = int(input())
saikoro = saikoro(min,max)
print('出た目は%dです' % saikoro)

これで一応サイコロは振れます。

例外が発生しても処理を中断しないサイコロを作る

ただ上のコードだと、ユーザーが悪意満々で数字以外を入力してきたら対応できないので、その辺を追加していきます。

これには例外処理を追加します。
ここでは詳しく説明しないので、分からん人は良かったら過去記事を読んでみて下さい。

legendimposter.hatenablog.jp

 

import random
def saikoro(min,max):
    return random.randint(min,max)
print('最小値を入力してください')
while True: #無限ループ
    try:
        min = int(input()) #elseでBreakするまでココに返ってくる
        if min < 0:
            print('0以上の値を入力してください')
        else:
            break
    except (ValueError,TypeError):
        print('数字を入力してください') #例外が発生したら行う処理
    else:
        pass
print('最小値を%dに設定しました'% min)

print('最大値を入力してください')
while True: #無限ループ
    try:
        max = int(input()) ##elseでBreakするまでココに返ってくる
        if min >= max:
            print('最大値を入力してください')
        else:
            break
    except (ValueError,TypeError):
        print('数字を入力してください') #例外が発生したら行う処理
    else:
        pass
print('最大値を%dに設定しました'% max)
saikoro = saikoro(min,max)
print('出た目は%dです' % saikoro)

僕自身まだまだ初心者なので無限ループで回す方法しか思いつかなかったので、こうなりました。
サイコロに関して、コレ以上のアイデアがなかったので今回はここで終わりますが、もしサイコロに関するアイデアが山のように溢れている方が居たら、上のコードを改変しながら理想のサイコロを作ってみたりしてみて下さい。

参考ページ

note.nkmk.me