STEP: 1 構造体の作成
構造体の作成
class User:
def __init__(self, nickname, old, birth, state):
self.nickname = nickname
self.old = old
self.birth = birth
self.state = state
def setup():
N = int(input())
datas = [input().split() for _ in range(N)]
users = [User(*data) for data in datas]
return users
def main(users):
for user in users:
print('User{')
print('nickname :', user.nickname)
print('old :', user.old)
print('birth :', user.birth)
print('state :', user.state)
print('}')
if __name__ == '__main__':
main(setup())
※ 「3章 オブジェクト指向」を修了した前提で進めていきます。
ただ問題を解くだけではあまり意味がありませんので、paiza の解答コード例を先に参照しつつ、ここではクラス型で解説をしていきます。
後の本番の予行演習として、実際に自分の手でクラス型に組み換えてみてください。
まずは最下行にある main() 関数を呼び出す際の引数 setup() 関数から始まります。ここで入力を受け取り、インスタンスを作成しています。そのインスタンスが入ったリストを引数に、 main() 関数を実行します。
コンストラクタにはクラスのみんなのアカウント情報を格納します。それらを main() 関数内から各ユーザー(user)のインスタンス変数を参照して利用します。
この状態から main() 関数の中身をメソッド化し、メソッドを呼び出して実行するプログラムに書き換えてみてください。
オブジェクト指向は、スキルチェックBランク問題でも必要性はありませんが、Cランクに比べて複雑になり、またこのような構造体の問題が頻繁に出題されます。プログラムが複雑化すると後から見返した時に自分で組んだものにも関わらず、わかりにくくなってしまいます。一言で言うと「ぐちゃぐちゃ」です。そんな時にクラス型で組むととてもスッキリと組めるようになるメリットがあります。
実際に組み慣れないと実感が持てませんが、このメニューを無視せずに最後まで解いてみてください。