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

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

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

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

2回答

1554閲覧

ファイルを読み込み・リストの作成ができない

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2017/12/21 07:34

###前提・実現したいこと
mainを実行するとファイルの読み込みまではうまくいくのですが、_init_で止まってしまいます。
いろいろ検索してみましたが、原因がわからず困っています。
###発生している問題・エラーメッセージ

Traceback (most recent call last): File "C:\pleiades\workspace\CFW171218\main.py", line 33, in <module> pop.readPersonFile(residents) File "C:\pleiades\workspace\CFW171218\population.py", line 34, in readPersonFile new_per = resident.Resident([l_per[0], l_per[1], l_per[2], str(l_per[3]), l_per[4]]) TypeError: __init__() missing 4 required positional arguments: 'houID', 'age', 'sex', and 'member'

###該当のソースコード

python

1[main] 2import population 3from datetime import datetime 4 5f_person = '_f_ofunato_person3.csv' 6 7if __name__ == '__main__': 8 startPoint = datetime.now() # 実行時間を計るため 9 print('Start!') 10 # 初期化 11 residents = [] 12 pop = population.Population() 13 pop.readPersonFile(residents) 14 15[population] 16import main, resident 17class Population(object): 18 residents = [] 19 sexAgeBank = [] # その都市の年齢と性別ごとの人数データ 20 sexAgeList = [] # 一人ひとりの年齢性別設定用リスト 21 sexAgeJobBank = [] # その都市の年齢と性別ごとの各職業人数データ 22 sexAgeJobProb = [] # その都市の年齢と性別ごとの各職業へついている確率データ 23 24 def readPersonFile(self, residents): # 年齢,性別での職業ごとの人数データをファイルから読み込む 25 l_person = [] # その都市の年齢と性別ごとの各職業人数データを格納する 26 for pers in open(main.f_person, 'r').readlines(): 27 a_per = pers.rstrip().split(',') # 改行記号削除,カンマでの分割処理 28 29 l_person.append([int(a_per[0]), int(a_per[1]), int(a_per[2]), str(a_per[3]), int(a_per[4])]) 30# [personBank[0]:住民ID, int(personBank[1]):世帯ID, int(personBank[2]):年齢, \ 31# personBank[3]:性別, int(personBank[6])世帯人数] 32 33 for l_per in l_person: 34 new_per = resident.Resident([l_per[0], l_per[1], l_per[2], str(l_per[3]), l_per[4]]) 35 residents.append(new_per) 36 37[resident] 38class Resident(object): 39 resID = 0 # 住民番号(整数) 40 houID = 0 # 世帯ID(整数) 41 age = 0 # 年齢(整数) 42 sex = '' # 性別(文字列) 43 member = 0 44 hasChanged = 0 45 i_income = 0 # 個人収入(万円)(整数) 46 h_income = 0 # 世帯収入(万円)(整数) 47 job = 'none' # 仕事(文字列) 48 job0 = 'none' #前職 49 tenured = 'yes' 50 status = 'alive' 51 occupancy = 0 # 在職期間(週数)(整数) 52 skill = [] # 所持スキル(文字列) 53 flag = 0 54 flag2 = 0 55 application = 'none' 56 57 def __init__(self, resID, houID, age, sex, member): 58 self.resID = resID 59 self.houID = houID 60 self.age = age 61 self.sex = sex 62 self.member = member 63 self.skill = [] 64 self.job = 'none' 65 self.job0 = 'none' 66 self.status = 'alive' 67 self.i_income = 0 68 self.h_income = 0 69 self.tenured = 'yes' 70 self.hasChanged = 0 71 self.flag = 0 72 self.flag2 = 0 73 self.application = 'none' 74 self.occupancy = 0 # 在職期間(週数)(整数)

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

guest

回答2

0

ベストアンサー

呼び出す際にリストを使わなければ通るかと。

Python

1new_per = resident.Resident(l_per[0], l_per[1], l_per[2], str(l_per[3]), l_per[4])

同様のエラーを起こすコードはこちら。

Python

1>>> def hoge(arg1, arg2): 2... pass 3... 4>>> hoge(1, 2) 5>>> hoge([1, 2]) 6Traceback (most recent call last): 7 File "<stdin>", line 1, in <module> 8TypeError: hoge() missing 1 required positional argument: 'arg2'

投稿2017/12/21 07:40

編集2017/12/21 07:41
LouiS0616

総合スコア35658

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

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

退会済みユーザー

退会済みユーザー

2017/12/21 07:41

ありがとうございますm(__)m
guest

0

もう解決されていますが、ダイエットしてみます。

python

1new_per = resident.Resident(*l_per)

少々気になるとすれば、population.Populationresident.Residentではクラス変数を使っていますが、複数のインスタンスを作った時に想定外の挙動をするかどうかですね。

population.pymainを循環インポートしていることも…

投稿2017/12/21 11:32

mkgrei

総合スコア8560

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問