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

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

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

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

Q&A

解決済

1回答

1101閲覧

pythonで別のpythonファイルを読み込みたい。

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

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

0グッド

1クリップ

投稿2020/08/30 09:26

前提・実現したいこと

Pythonでブラックジャックを作っているのですが、ソースコードが非常に長くなってしまい、別のファイルに処理を移して必要に応じて読み込むことで、ソースコードを短縮したいと思いました。

発生している問題・エラーメッセージ

関数やクラスをimportする方法は見つかったのですが、どうしてもファイル自体をimportする方法が見つかりませんでした。

該当のソースコード

import random
import sys
import time
import pygame
import mutagen
serect='99'
ranking =[]
playerlist =''
text =''
mainmenu = 'main'
play = open('playerlist.txt','r+', encoding="utf-8")
text = play.read()
for text in play:
playerlist = (playerlist) + (text)
playerlist = text
print('ブラックジャック')
print('メインメニューです。')
while mainmenu ==('main'):
mainmenu =input('ランキングを表示する場合は1、データをロードする場合は2を、新規作成の場合は3、データを削除する場合は4、終了する場合は5を入力してください。:')
if mainmenu ==('1'):
print(playerlist)
mainmenu ='main'
if mainmenu ==('2'):
name =input('プレイヤーネームを入れて下さい')
if name in playerlist:
print(name+"さん、ゲームを開始します。")
elif name not in playerlist:
print("プレイヤーが見つかりませんでした。メインメニューに戻ります。")
mainmenu ='main'
if mainmenu ==('3'):
name = input('登録するプレイヤーネームを入力してください。')
play = open('playerlist.txt','r+', encoding="utf-8")
text = play.read()
playerlist = text
playerlist.write(str(name))
print('登録できました。')
mainmenu ='main'
if mainmenu ==('4'):
name = input('削除したいプレイヤーの名前を入力してください。')
playerlist.remove(name)
print('削除できました。')
mainmenu ==('menu')
if mainmenu == ('5'):
sys.exit()
if mainmenu == ('256'):
serect == ('yes')
while serect ==('yes'):
serect='No'
hand = 0
hand = random.randint(1,10)
hand = hand+random.randint(1,10)
dillerhandA = random.randint(1,10)
dillerhand = dillerhandA+random.randint(1,10)
print('相手の手札')
print(dillerhandA)
print('自分の手札')
print(hand)
serect = input('hitかstandどちらにしますか?')
while serect == ('a'):
hand =21
while serect == ('hit'):
hand = hand+random.randint(1,10)
print('自分の手札')
print(hand)
if hand>21:
print('バースト')
sleep(1)
hand=0
serect = input('続けますか?')
break
serect = input('hitかstandどちらにしますか?')
while serect ==('stand'):
while dillerhand <= 16:
dillerhand = dillerhand+random.randint(1,10)
print('相手の手札')
print(dillerhand)
if dillerhand >=16:
if dillerhand>21:
print('バーストしました')
print('相手の手札')
print(dillerhand)
serect = input('続けますか?')
continue
if dillerhand>hand:
print('あなたの負け')
print('相手の手札')
print(dillerhand)
serect = input('続けますか?')
if dillerhand<hand:
print('あなたの勝ち')
print('相手の手札')
print(dillerhand)
serect = input('続けますか?')
if hand == dillerhand:
print('引き分けです')
print('相手の手札')
serect = input('続けますか?')
while serect == ('no'):
print('お疲れさまでした。')
sleep(3)
sys.exit()
上のソースコードの中の
while serect ==('yes'):
serect='No'
hand = 0
hand = random.randint(1,10)
hand = hand+random.randint(1,10)
dillerhandA = random.randint(1,10)
dillerhand = dillerhandA+random.randint(1,10)
print('相手の手札')
print(dillerhandA)
print('自分の手札')
print(hand)
serect = input('hitかstandどちらにしますか?')
while serect == ('a'):
hand =21
while serect == ('hit'):
hand = hand+random.randint(1,10)
print('自分の手札')
print(hand)
if hand>21:
print('バースト')
sleep(1)
hand=0
serect = input('続けますか?')
break
serect = input('hitかstandどちらにしますか?')
while serect ==('stand'):
while dillerhand <= 16:
dillerhand = dillerhand+random.randint(1,10)
print('相手の手札')
print(dillerhand)
if dillerhand >=16:
if dillerhand>21:
print('バーストしました')
print('相手の手札')
print(dillerhand)
serect = input('続けますか?')
continue
if dillerhand>hand:
print('あなたの負け')
print('相手の手札')
print(dillerhand)
serect = input('続けますか?')
if dillerhand<hand:
print('あなたの勝ち')
print('相手の手札')
print(dillerhand)
serect = input('続けますか?')
if hand == dillerhand:
print('引き分けです')
print('相手の手札')
serect = input('続けますか?')
while serect == ('no'):
print('お疲れさまでした。')
sleep(3)
sys.exit()
ここまでを別のファイルに移し、ブラックジャックの処理が終わったらこれより上の処理に戻したいと思っています。

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

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

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

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

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

guest

回答1

0

ベストアンサー

まず、コードはコードブロックで囲んでください。
インデントが崩れて見づらいですし、Pythonの場合はインデント自体にも意味のあるので実行できないです。

関数やクラスをimportする方法は見つかったのですが、どうしてもファイル自体をimportする方法が見つかりませんでした。

そもそもこの解釈自体間違っています。
importした場合、指定したファイルのコードが最後まで実行されます。
そうすることで、そのファイルに書かれた関数やクラスが使えるようになります。

なので、以下のようにすると、「test」という文字列が表示されます。

Python

1# coding: utf-8 2# Main.py 3 4import file1

Python

1# coding: utf-8 2# file1.py 3 4print('test')

paiza.ioでの実行結果

ただ、普通はこういうことはせず、関数やクラスにして、それを適宜実行するというのが普通です。
詳しいところまで見れていないですが、今回のケースでも関数などで済む内容なのではないでしょうか。
「処理が終わったらこれより上の処理に戻したい」のであれば、なおさら関数のほうが便利だと思いますが。

投稿2020/08/30 10:30

fiveHundred

総合スコア10152

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問