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

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

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

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Python

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

Q&A

解決済

1回答

633閲覧

Import したのにモジュール内のコードが動作してくれない

IchikawaHikaru

総合スコア2

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Python

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

0グッド

0クリップ

投稿2020/10/24 09:10

編集2020/10/27 08:39

Python

1drink = ["綾鷹"] 2value = [150] 3 4item = dict (zip(drink,value)) 5 6for i , x in enumerate(drink): 7 print (x+":"+str(value[i])+"円") 8 9choice = item[input ("購入したい商品を選んでください。")]

このコードを他ファイルからimportして動かすにはどうすればよいのでしょうか。
他ファイルからimportしたら何も起きませんでした。(エラーも起きていません。)

追記

TakaiYさんご丁寧に有難うございます。
下記にコードを表示いたします。

Python

1money = input ("お金をいれてください:") 2 3int(money) 4import select 5re_money = money - select.choice 6if re_money >= select.choice : 7 print ("{}円返金".format(re_money)) 8 print ("ありがとうございました!") 9else : 10 print ("お金が足りません。。。") 11 print ("{}を返金".format (money))
drink = ["綾鷹"] value = [150] item = dict (zip(drink,value)) for i , x in enumerate(drink): print (x+":"+str(value[i])+"円") choice = item[input ("購入したい商品を選んでください。:")]

追記
TakaiYさんご返答頂きありがとうございます。
問題はimportを使った先のファイル名なのではという仮説が浮かびました。
pythonには組み込みモジュールにselectという名前のものがあり、importを実行する際に私が作ったファイルではなくそちらを読み込んでいたというものです。
試しにselectという名前をselectsという名前にしたら問題なく動作しました。

そこで追加の質問となってしまうのですが、
1.この仮説は間違いないでしょうか、また、importでは必ず組み込みモジュールが優位に働くという解釈で間違いないでしょうか。
2.今後このようなことがないようにするために自分のファイル名が組み込みモジュールと被っていないかを調べる方法はあるのでしょうか。
一度自力で調べたのですがうまく理解できませんでした。ご返答お待ちしております。

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

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

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

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

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

TakaiY

2020/10/24 10:09

あなたの、「importして動かす」と、具体的にどのようになることを期待していますか? ただ、他のファイルからインポートすると何も起きないということはなく、 「綾鷹:150円」 と 「 購入したい商品を選んでください。」と表示されて入力待ちになり、入力すると、importしたファイルに処理が戻ります。
meg_

2020/10/24 11:03

> 他ファイルからimportしたら何も起きませんでした。(エラーも起きていません。) そのコードを掲載してください。
aokikenichi

2020/10/25 08:49

おそらくimportを誤解なさっているのかと importで動くのではありません 関数などを定義したファイルをimportしてimportしたがわで関数を呼び出して使って初めて動作します
IchikawaHikaru

2020/10/25 17:03 編集

ご指摘ありがとうございます。 私は以下のように動作させようとしているとします。 上記のファイルをselect.pyと命名します。また新しくnew.pyというファイルを作るとします。 new.py のコードはimport select のみで、select.pyのコードは上記の通りです。 この時、 ①new.pyのコードを実行する という動作をしました。 私が望む結果は、 ①new.pyのコードを実行する。 ②new.pyのimportによりselect.pyのコードが実行される。 ③select.py内のinput関数によりShellの部分に入力できるようになる。 です。 しかしながら、実際に①をした結果、何も起きませんでした。
TakaiY

2020/10/25 23:51

回答は、元の質問を編集して書き込んでください。 また、最初にも書きましたが、回答のようにすれば、select.pyの内容が実行されて、入力を求められるはずです。 そうならないということは、何か犯しいので、実際に問題が発生するようなファイルを作って掲載してください。
TakaiY

2020/10/27 06:23

提示いただいたコードをそのままコピペして実行すると、想定どおりの動作をしています。 PS C:\Users\xxx\work> python .\new.py お金をいれてください:100 綾鷹:150円 購入したい商品を選んでください。:綾鷹 Traceback (most recent call last): File ".\sample.py", line 6, in <module> re_money = money - select.choice TypeError: unsupported operand type(s) for -: 'str' and 'int' このように、「購入したい商品を選んでくだささい : 」が importのタイミングで表示され入力できます。 ただ、その後バグがあるので、落ちていますが、それは別の話です。
meg_

2020/10/27 10:54 編集

カレントディレクトリに」「select.py」を置いたら私の環境では先に読み込まれましたよ。(TakaiYさんが言う通りエラーが出ましたが)
guest

回答1

0

ベストアンサー

モジュールがどのように検索されるかについては、
公式ドキュメントのここ
に書いてあります。

標準ライブラリは、
公式ドキュメントのここ
に書いてあります。

(ちなみに、自分の環境で作ったselect.pyが普通に読み込めたりゆうがよくわからない)

投稿2020/10/27 10:52

TakaiY

総合スコア13790

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

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

IchikawaHikaru

2020/10/27 13:11

有難うございます! 今後はうまく読み込めない場合も考えて作っていこうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問