0
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?

More than 3 years have passed since last update.

Pythonでtry/exceptと、ディクショナリの編集、取り出しの応用練習

Last updated at Posted at 2020-12-27

#はじめに
閲覧していただきありがとうございます。
英語の文法は許してください。
有識者の方へ、もっとなんとかなるとかあったら優しく教えてください。

#概要
・ディクショナリからキーを検索する。
・指定したキーが見つかった場合は値を出力、見つからなかった場合は「鍵は見つからなかった」と出力する。
・上記処理が終了したときに、続行するか、ディクショナリを編集するか、終了するかを選択する。

#完成例

name_age = {"tanaka":33,"satou":23,"suzuki":29}
def dict_info (dict_tbl,key):

    try:
        print(key,"'s",dict_tbl[key]," years old.")

    except LookupError:
        print("[Key is not found.]")

op = 0
while op !=1:
    if op == 0:
        key = input("[Enter a name of the target.]:")
        dict_info(name_age,key)
        print("[Conitnue>0]","\n","[End>1]","\n","[Edit the dictionary>2]")
        op = int(input("[Choose 0 or 1 or 2]:"))

    if op == 2:
        print("[Edit the dictionary]")
        addn = input("[EDIT][Enter a name of the target]:")
        adda = int(input("[EDIT][Enter a age of the target.]:"))
        name_age[addn] = adda
        op = int(input("[Choose 0 or 1 or 2]:"))

    if op !=1 and op !=0 and op !=2:
        while op != 0 and op != 1 and op != 2:
            print("[Conitnue>0]","\n","[End>1]","\n","[Edit the dictionary>2]")
            op = int(input("[Choose 0 or 1 or 2]:"))

#実行例

 [Enter a name of the target.]:niwa
 [Key is not found.]
 [Conitnue>0] 
  [End>1] 
  [Edit the dictionary>2]
 [Choose 0 or 1 or 2]:0
 [Enter a name of the target.]:tanaka
 tanaka 's 33  years old.
 [Conitnue>0] 
  [End>1] 
  [Edit the dictionary>2]
 [Choose 0 or 1 or 2]:2
 [Edit the dictionary]
 [EDIT][Enter a name of the target]:masato
 [EDIT][Enter a age of the target.]:19
 {'tanaka': 33, 'satou': 23, 'suzuki': 29, 'masato': 19}
 [Choose 0 or 1 or 2]:1

#ディクショナリの作成
ディクショナリname_ageのキーに人名、値に年齢を入れている。

name_age = {"tanaka":33,"satou":23,"suzuki":29}

#ディクショナリからキーを検索する関数の作成
tryでキーが見つかった場合はprintで表示する。
exceptでキーが見つかんなかった場合は「Key is not found.」と表示する。


def dict_info (dict_tbl,key):

    try:
        print(key,"'s",dict_tbl[key]," years old.")

    except LookupError:
        print("[Key is not found.]")

#続行するときの文を作成
inputでキーを指定する。
opは後にwhileで使用する。


key = input("[Enter a name of the target.]:")
        dict_info(name_age,key)
        print("[Conitnue>0]","\n","[End>1]","\n","[Edit the dictionary>2]")
        op = int(input("[Choose 0 or 1 or 2]:"))

#ディクショナリを編集する文を作成
addnは追加するキー(人名)を指定する。
addaは追加する値(年齢)を指定する。


print("[Edit the dictionary]")
        addn = input("[EDIT][Enter a name of the target]:")
        adda = int(input("[EDIT][Enter a age of the target.]:"))
        name_age[addn] = adda
        print(name_age)
        op = int(input("[Choose 0 or 1 or 2]:"))

#続行か終了かディクショナリを編集かを選択させる文を作成
続行するときの文と、ディクショナリを編集する文の二つの文を、下のように挿入している。
できるだけ強制終了であるbrakeを使用したくないため、終了の1を入力したらwhileのループが終了するようになっている。
最後のifでは誤った選択肢を選択された場合に正しい選択肢が選択されるまでwhileでループさせている。


while op !=1:
    if op == 0:
        key = input("[Enter a name of the target.]:")
        dict_info(name_age,key)
        print("[Conitnue>0]","\n","[End>1]","\n","[Edit the dictionary>2]")
        op = int(input("[Choose 0 or 1 or 2]:"))

    if op == 2:
        print("[Edit the dictionary]")
        addn = input("[EDIT][Enter a name of the target]:")
        adda = int(input("[EDIT][Enter a age of the target.]:"))
        name_age[addn] = adda
        print(name_age)
        op = int(input("[Choose 0 or 1 or 2]:"))

    if op !=1 and op !=0 and op !=2:
        while op != 0 and op != 1 and op != 2:
            print("[Conitnue>0]","\n","[End>1]","\n","[Edit the dictionary>2]")
            op = int(input("[Choose 0 or 1 or 2]:"))

#完成
全部組み合わせて完成。


name_age = {"tanaka":33,"satou":23,"suzuki":29}
op = 0
def dict_info (dict_tbl,key):

    try:
        print(key,"'s",dict_tbl[key]," years old.")

    except LookupError:
        print("[Key is not found.]")

while op !=1:
    if op == 0:
        key = input("[Enter a name of the target.]:")
        dict_info(name_age,key)
        print("[Conitnue>0]","\n","[End>1]","\n","[Edit the dictionary>2]")
        op = int(input("[Choose 0 or 1 or 2]:"))

    if op == 2:
        print("[Edit the dictionary]")
        addn = input("[EDIT][Enter a name of the target]:")
        adda = int(input("[EDIT][Enter a age of the target.]:"))
        name_age[addn] = adda
        print(name_age)
        op = int(input("[Choose 0 or 1 or 2]:"))

    if op !=1 and op !=0 and op !=2:
        while op != 0 and op != 1 and op != 2:
            print("[Conitnue>0]","\n","[End>1]","\n","[Edit the dictionary>2]")
            op = int(input("[Choose 0 or 1 or 2]:"))

#おわりに
「ディクショナリの編集といいつつ追加しかできないじゃないか」て投稿前におもった。
最初から最後まで自分ひとりでかけてないので、今後自分だけでかけるようになりたい。
英語ってかっこいいけど見るのいちいちめんどくさい。
はじめに書いたけど初心者だから色々変だとおもうけど許してね。

そのうち初心者やめたい。

0
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
0
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?