質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

10722閲覧

超簡単なサイコロゲームを実行するコード

monta

総合スコア12

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2016/07/25 08:43

編集2016/07/25 23:15

python3.3勉強中の初心者です。
以下のコードはコマンドプロンプト→シェルから
import dice_gameと入力すれば動きますが、一度きりしか動きません。シェルを閉じてもう一度入力すれば実行できますが、2度、3度と連続して実行するにはどんなコードを入力すれば良いですか? ファイルは2つあります。
以下dice.py
import random

class Dice:
def init(self,val=6):
if val not in [4,6,8,12,20]:
raise Exception("そんな正多面体はありません。")
self.face_num = val

def shoot(self): return random.randint(1,self.face_num) 以下は、dice_game.py

import dice

num = eval(input('4,6,8,12,20のどれで勝負しますか?:')) # input関数を使って値を受け取る
my_dice = dice.Dice(num) # ユーザー用のサイコロ
cpu_dice = dice.Dice(num) # コンピュータ用のサイコロ

my_pip = my_dice.shoot() # pipはサイコロの目の意味
cpu_pip = cpu_dice.shoot() # コンピュータの出た目

出目を画面に出力 数字はstr関数を使って文字列に変更

print('CPU:' + str(cpu_pip) + ' あなた:' + str(my_pip))

状況によってメッセージを変える

if my_pip > cpu_pip:
print('おめでとうございます。あなたの勝ちです!')
elif my_pip < cpu_pip:
print('残念!あなたの負けです。')
else:
print('引き分けです')
python3.3勉強中の超初心者です。以下の2つの
ファイルをコマンドプロンプト→シェルでimport dice_game
と入力すると実行できるのですが、一度しか実行できません。シェルを閉じてもう一度立ち上げれば実行はできます。
連続して実行するにはどんなコードを入力すれば良いですか? もしくはコードそのものの改造が必要ですか?
このコードはある初心者向けの本のコードです。
以下、1つ目のファイルdice.py

import random class Dice: def __init__(self,val=6): if val not in [4,6,8,12,20]: raise Exception("そんな正多面体はありません。") self.face_num = val def shoot(self): return random.randint(1,self.face_num) #以下はdice_game.pyです。別ファイルに記載。 import dice num = eval(input('4,6,8,12,20のどれで勝負しますか?:')) my_dice = dice.Dice(num) cpu_dice = dice.Dice(num) my_pip = my_dice.shoot() # pipはサイコロの目の意味 cpu_pip = cpu_dice.shoot() # コンピュータの出た目 # 出目を画面に出力 数字はstr関数を使って文字列に変更 print('CPU:' + str(cpu_pip) + ' あなた:' + str(my_pip)) # 状況によってメッセージを変える if my_pip > cpu_pip: print('おめでとうございます。あなたの勝ちです!') elif my_pip < cpu_pip: print('残念!あなたの負けです。') else: print('引き分けです')

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2016/07/25 08:52

インデントなくなってますよ
argius

2016/07/25 11:17

コード部分は``` ```で囲んで(それぞれ改行する)、正しく表示されるかをプレビューで確認してください。詳しくは質問画面のmarkdownをクリックしてみて下さい。これをしないと、Pythonではインデントが維持されずに致命的に読みにくくなります。また__ __で囲んだ箇所が「強調」になり__が消えてしまうので、__init__がinitに見えます。
monta

2016/07/27 05:35

argiusさん、有り難うございます。 初心者なのでとても参考になります!
guest

回答3

0

一度目をimport dice_gameと入力し、2度目以降はimp.reload(dice_game)で
目的の動きは達成しましたが、何かしっくり来ないです。

テキストにはpython dice_game.pyと入力してありますが、エラー出ます。
その他、色々試しましたfが、上記の方法しかできませんでした。
ちなみに一度目、二度目の実行に関わらず,import impとするとエラー出ます。

投稿2016/07/27 05:27

monta

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

import が .py を実行する方法として正しいかどうかは置いておいて・・・

初回 import dice_game で実行できたものは、
python2系では、2回目以降 reload(dice_game) で実行できます。
python3系では、 import imp を予めしておいた上で、 imp.reload(dice_game) で実行できます。

投稿2016/07/26 02:09

hiro-k

総合スコア902

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

monta

2016/07/27 05:32

hiro-kさん、有り難うございます。 import dice_gameの後にimp.reload入力でうまく動きました。  しかし、、、import impを最初に入力するとエラーでます、、。 import dice_gameの後でimp.reloadでないと動きません。 テキストにはpython dice_game.pyと入力するようになっていますが、 当然エラーになります。 少し、しっくり来ないのですが、問題は解決しました のでベストアンサーに選びました。
guest

0

質問とは関係ないですが、numintにするには、eval()関数でなくint()関数を使いましょう。

ループを使って、ゲーム後に終了するかどうかを判定するのはどうですか?
それか、ゲーム数を決めておいて、for文でループでも良いです。

lang

1while True: 2 # メイン処理 3 4 if input("続けますか?[Y/n]") != "Y": 5 break 6 7print("ゲームを終了します")

投稿2016/07/25 11:18

argius

総合スコア9388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問