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

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

新規登録して質問してみよう
ただいま回答率
85.48%
文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

Python

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

Q&A

1回答

602閲覧

python for文でデータをまとめるクラス

NatsukiKataoka

総合スコア7

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

Python

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

0グッド

0クリップ

投稿2019/08/21 14:29

前提・実現したいこと

名前と年齢を辞書として内部に保存し逐次追加できるクラスRosterを作成後、検索した名前があれば'(名前)はあります'、なければ'名前は見つかりませんでした'と表示するメソッドsearchを追加したいです。

なお、出力させたいイメージは以下の様な感じになります。

タケシはあります
カミヤは見つかりませんでした

[{'age': 11 'name': 'ノビタ'}, {'age': 21, 'name': 'タケシ'}]

発生している問題

for 文でnameとageを一つのリストにしてそこからsearchしたい名前を出すようにしたいです。
できればそのデータを一つのリストにするクラスを作りたいです。

該当のソースコード

python

1class Roster: 2 def __init__(self, name, age): 3 self.name = name 4 self.age = age 5 def add(self): 6 list.append(self.age) 7 list.append(self.name) 8 def search(self): 9 namer = input('who to search') 10 if namer in dict.values(): 11 return namer + 'はあります' 12 else: 13 return namer + 'はありません!' 14 15person1 = Roster('max', 18) 16person2 = Roster('john', 13) 17person3 = Roster('max', 12) 18person4 = Roster('mark', 28) 19person5 = Roster('dog', 10) 20 21people = [person1,person2,person3,person4,person5] 22list = [] 23for a in people: 24 list.append(a) 25print(list)

補足情報

python初心者です。もし構わなければお答えしていただければ幸いです。

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

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

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

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

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

y_waiwai

2019/08/21 14:31

で、現状のコードではどういう動作になるんでしょうか
meg_

2019/08/21 14:34

「出力させたいイメージは以下の様な感じになります」とのことですが、今はどこまで実装されているでしょうか?
NatsukiKataoka

2019/08/21 14:54

[<__main__.Roster object at 0x114570e10>, <__main__.Roster object at 0x114570c50>, <__main__.Roster object at 0x1145708d0>, <__main__.Roster object at 0x114570dd0>, <__main__.Roster object at 0x114570a90>] {} maxはありません! とmaxというnamerをインプットすると出力されます。すみません。
meg_

2019/08/21 15:04

掲載のコードには「辞書」が見当たらないと思うのですが。
guest

回答1

0

名前と年齢を辞書として内部に保存し逐次追加できるクラス

なのであれば以下のようなクラスにするのが自然かと思います。
また、input()的な役割は呼出元に持たせた方がよいです。

Python

1class Roster: 2 3 def __init__(self): 4 self.dic = dict() # キー=名前, 値=年齢 5 6 def add(self, name, age): 7 self.dic[name] = age 8 9 def search(self, name): 10 if name in self.dic: 11 return '{}はあります。{}才です。'.format(name, self.dic[name]) 12 else: 13 return name + 'はありません!' 14 15r = Roster() 16r.add('max', 18) 17r.add('john', 13) 18r.add('max', 12) 19r.add('mark', 28) 20r.add('dog', 10) 21 22for name in ['max','dan']: 23 print(r.search(name))

投稿2019/08/21 15:10

can110

総合スコア38266

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問