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

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

ただいまの
回答率

88.91%

Python モジュールが確認できない。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 213

daiki__1019

score 9

# -*- coding: utf-8 -*-
import sys, os
sys.path.append('../')          # 一つ上のフォルダから探せるようにする
from my.Cons import Cons        # 連結リストを使う

def fun1(dat):      # 手続き型(繰り返し構造)
    a = []
    for x in dat:
        p = x / 7 * 100                 # 100点換算
        if p >= 50:                     # 50点以上を抽出
            a.append(str(round(p, 1)))  # 四捨五入と文字列化
    a = ';'.join(a)                     # ;で結合
    return a

def fun2(dat):      # 手続き型(内包表記)
    a = [x / 7 * 100 for x in dat]      # 100点換算
    a = [x for x in a if x >= 50]       # 50点以上を抽出
    a = [str(round(x, 1)) for x in a]   # 四捨五入と文字列化
    a = ';'.join(a)                     # ;で結合
    return a

def fun3(dat):      # 関数型(関数呼び出しの入れ子)
    return ';'.join(                                # ;で結合
        map(lambda x: str(round(x, 1)),             # 四捨五入と文字列化
            filter(lambda x: x >= 50,               # 50点以上を抽出
                map(lambda x: x / 7 * 100, dat))))  # 100点換算

def fun4(dat):      # 関数型+オブジェクト指向(メソッドチェーン)
    return (dat.map(lambda x: x / 7 * 100)          # 100点換算
               .filter(lambda x: x >= 50)           # 50点以上を抽出
               .map(lambda x: str(round(x, 1)))     # 四捨五入と文字列化
               .join(";"))                          # ;で結合

if __name__ == '__main__':
    d = [5, 3, 6, 7, 2]         # 正解数のデータ(全7問)
    print(fun1(d))
    print(fun2(d))
    print(fun3(d))
    d = Cons.of(5, 3, 6, 7, 2)  # 連結リスト(Consリスト)で用意
    print(fun4(d))

エラー文

  File "Functional.py", line 4, in <module>
from my.Cons import Cons        # 連結リストを使う
ImportError: No module named my.Cons

サンプルコードが記載されている教科書には

Consモジュールで定義さレた連結リスト→Consリスト(本書特有の呼び方)

と記載されていてます。

ファイル構成
イメージ説明

sys.path.append('../')


ここのパスを変えればいいのではないかと思っているのですがなかなかうまくいかず苦戦しております。

ご教授いただけたらと思います。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

sys.path.append('../')

上記の表現は python コマンドを実行したディレクトリーからの path として扱われます
おそらく第1章ディレクトリー内に Functional.py があると思いますが、
python コマンドも第1章ディレクトリー内で実行しましょう:

$ cd 第1章
$ python Functional.py
71.4;85.7;100.0
71.4;85.7;100.0
71.4;85.7;100.0
Traceback (most recent call last):
  File "Functional.py", line 39, in <module>
    d = Cons.of(5, 3, 6, 7, 2)  # 連結リスト(Consリスト)で用意
AttributeError: type object 'Cons' has no attribute 'of'

上記は Functional.py の実装がこちらでわからなかったのでエラーが発生していますが、
少なくとも 4 行目ではエラーが出なくなっています

追記

利用している Python のバージョンが 2.* の場合は、
my ディレクトリー内に __init__.py というファイルを作成する必要があります
(ファイルの中身は空で構いません)

Python_勉強
+---my
|   +---__init__.py
|   +---Cons.py
|
+---第1章
    +---Functional.py

現在利用している Python のバージョンは次のコマンドで確認できます:

$ python --version
Python 3.8.3

上記の例は Python バージョンが 3.* ですので、__init__.py は必要ではありません

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/07/10 00:04

    指示通りに実行しても質問内容と同じエラー文が返ってきてしまいます。

    キャンセル

  • 2020/07/10 01:18

    回答を追記しました、
    Python のバージョンが 2.* の場合は
    my ディレクトリーの中に__init__.py というファイルが必要です

    ご確認をおねがいします

    キャンセル

  • 2020/07/10 01:39

    バージョン確認したところ、
    Python 2.7.16
    でした!
    実行時に’’python3 Fanctinal.py’’で求めていた実行結果になりました!
    ありがとうございます!!!!

    キャンセル

0

Python3 自作モジュールのインポートにハマる

などが参考となるのでは。

まずは、上の階層ではなくて同じフォルダに入れてはいかがでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 88.91%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る