1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

構造体の更新

Last updated at Posted at 2024-02-29

前回の記事のコメントで教えていただいた方法を参考に。
配列の特定のインデックスのその中の構造体の要素の更新方法が
わからず、色々調べつつ。
勉強になりました。。。

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ってヒント、問題に書いてあった。
もしかしてこういうことかな?と思ったけどどうだろうね。
でも見直してみてもこれが一番いい書き方な気がする。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?