前回の記事のコメントで教えていただいた方法を参考に。
配列の特定のインデックスのその中の構造体の要素の更新方法が
わからず、色々調べつつ。
勉強になりました。。。
class Member():
def __init__(self, name, old, birth, state):
self.name = name
self.old = int(old)
self.birth = birth
self.state = state
def __str__(self):
"""表示文字列に変換する"""
return f"{self.name} {self.old} {self.birth} {self.state}"
N,K= map(int,input().split())
members = [Member(*input().split()) for _ in range(N)]
for _ in range(K):
t_index,t_name = input().split()
members[int(t_index)-1].name = t_name
for member in members:
print(member)
***
別件で、
そういえば、こないだ、メールでBランク問題のスキルチェックに挑戦したら
アマゾンのクーポンがもらえるとかで、参加してみたんですが撃沈しました。
調べた結果なのですが、まあ、解答がわからないので、とりあえずテストを
して修正していくしかないのですが、
私の場合は3データで失敗になって、(基本データ1つ、境界値データ2つ)
そこでお手上げになりました。(データがわからない以上、手のうちようがなく)
うーん。みんなテスト用の基本データとか境界値データとかってどうやって作って
開発したプログラムに入力させてるんだろうか。
そこを知らないとPaizaで上に行けないような気がする。
一応メモっとく。
とりあえずBランクの問題集をやっていけばいつかはわかるようになるのだろうか?
とかいいつつ、いま新しいスキルチェック問題をやったらBランクになりました。。。
よかったです。(でもなかなか難しかった)
やっぱりレベルアップ問題集での経験が生かされてますね。。。
(2025.6.7追記)
今構造体の復習をしていて、これってもっとクラスメソッドにしちゃっていいんじゃない?
と思ったので書いてみた。
class Member():
def __init__(self,nickname,old,birth,state):
self.nickname = nickname
self.old =int(old)
self.birth = birth
self.state = state
def __str__(self):
return f'{self.nickname} {self.old} {self.birth} {self.state}'
# このメソッドを増やした
def changeName(self, name):
self.nickname = name
N,K = map(int,input().split())
members =[]
for _ in range(N):
member = Member(*input().split())
members.append(member)
for _ in range(K):
num,name = input().split()
# こう変更した
members[int(num)-1].changeName(name)
for member in members:
print(member)
そもそも。changeNameってヒント、問題に書いてあった。
もしかしてこういうことかな?と思ったけどどうだろうね。
でも見直してみてもこれが一番いい書き方な気がする。