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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Python

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

Q&A

2回答

1180閲覧

空の辞書にkeyとvalueを入れる方法

退会済みユーザー

退会済みユーザー

総合スコア0

Python

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

0グッド

0クリップ

投稿2021/06/02 04:43

python

1 2s={} 3n=input('input drink name and charge:') 4b=n.upper() 5a=b.split( ) 6 7for x,y in a: 8 s.update(a) 9print(s) 10 11 12 13while n!='THANK YOU': 14 n=input('input drink name and charge:') 15 a=n.split( ) 16 a=b.split( ) 17 s.update(a) 18print(s)

forループを使って試しましたができませんでした。

問題

以下の指示に従ってプログラムを作成してください

1、「thank you」が入力されるまで、飲み物と値段をスペース区切りで入力し、辞書にして価格表を作って出力してください。
2、 1人目に「thank you」が入力されるまで、飲み物と数をスペース区切りで入力させ、辞書にして統計してください。
3、 2人目に「thank you」が入力されるまで、飲み物と数をスペース区切りで入力させ、辞書にして統計してください。
4、 それぞれの合計金額を出力してください。
入力例:

飲み物の名前と料金を入力してください:greentea 20

飲み物の名前と料金を入力してください:blacktea 30

飲み物の名前と料金を入力してください:milktea 50

飲み物の名前と料金を入力してください:CoFFe 40

飲み物の名前と料金を入力してください:thank you
{‘GREENTEA’: 20, ‘BLACKTEA’: 30, ‘MILKTEA’: 50, ‘COFFE’: 40}

一人目

飲み物の名前と個数を入力してください:coffe 40

飲み物の名前と個数を入力してください:thank you
{‘COFFE’: 40}

二人目

飲み物の名前と個数を入力してください:greentea 3

飲み物の名前と個数を入力してください:GreenTea 5

飲み物の名前と個数を入力してください:coFFe 8

飲み物の名前と個数を入力してください:blackTea 2

飲み物の名前と個数を入力してください:thank you
{‘GREENTEA’: 8, ‘COFFE’: 8, ‘BLACKTEA’: 2}
一人目の合計金額: 540
二人目の合計金額: 540

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

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

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

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

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

udon-ken

2021/06/02 04:52

> 空の辞書にkeyとvalueを入れる方法 これの意味が「辞書に要素を追加する方法」なら 辞書["キー"] = "値" というだけなので、forループがどうとかは本質的には関係ないと思います。
udon-ken

2021/06/02 04:59

あっと・・ s.update(a) でs(辞書)に要素を追加しようとしてるようですが、updateメソッドは辞書に別の辞書の要素を入れるという事ですので、今回のaはリストですので実行できません。
guest

回答2

0

追記・修正依頼書いた時にコード作っていたので、一応提示しておきます。
元々、関数使用していなかったので関数不使用でだらーっと処理するパターンです。
高確率でエラーが起こりそうで気持ち悪い部分については最低限のエラー処理を入れています。

python

1items = {} 2order = {} 3members = ["一人目", "二人目"] 4stop_word = "THANK YOU" 5 6# メニュー作成 7while True: 8 in_ = input('飲み物の名前と料金を入力してください:').upper() 9 if in_ == stop_word: 10 break 11 try: 12 item, charge = in_.split(" ", 1) 13 charge= int(charge) 14 except Exception as e: 15 print(f"入力エラー:{e}") 16 continue 17 items[item] = charge 18print(items) 19 20# オーダー入力 21for member in members: 22 order[member] = {} 23 print(member) 24 while True: 25 in_ = input('飲み物の名前と個数を入力してください:').upper() 26 if in_ == stop_word: 27 break 28 try: 29 item, qty = in_.split(" ", 1) 30 qty = int(qty) 31 except Exception as e: 32 print(f"入力エラー:{e}") 33 continue 34 if not items.get(item): 35 print(f"入力エラー:指定のドリンクは用意できません") 36 continue 37 if order[member].get(item): 38 order[member][item] += qty 39 else: 40 order[member][item] = qty 41 print(order[member]) 42 43# 金額出力 44for member in members: 45 sum = 0 46 for item, qty in order[member].items(): 47 sum += items.get(item) * qty 48 print(f"{member}の合計金額:{sum}")

出力

飲み物の名前と料金を入力してください:greentea 20
飲み物の名前と料金を入力してください:blacktea 30
飲み物の名前と料金を入力してください:milktea 50
飲み物の名前と料金を入力してください:CoFFe 40
飲み物の名前と料金を入力してください:thank you
{'GREENTEA': 20, 'BLACKTEA': 30, 'MILKTEA': 50, 'COFFE': 40}
一人目
飲み物の名前と個数を入力してください:coffe 40
飲み物の名前と個数を入力してください:
飲み物の名前と個数を入力してください:thank you
{'COFFE': 40}
二人目
飲み物の名前と個数を入力してください:greentea 3
飲み物の名前と個数を入力してください:GreenTea 5
飲み物の名前と個数を入力してください:coFFe 8
飲み物の名前と個数を入力してください:blackTea 2
飲み物の名前と個数を入力してください:thank you
{'GREENTEA': 8, 'COFFE': 8, 'BLACKTEA': 2}
一人目の合計金額:1600
二人目の合計金額:540

投稿2021/06/05 02:52

udon-ken

総合スコア657

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

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

0

#ソースコード

python

1# 価格表作成 2def create_dict(): 3 s = {} 4 while True: 5 n = input('input drink name and charge:') 6 b = n.upper() 7 8 # bが'THANK YOU'ならループから抜ける 9 if b == 'THANK YOU': 10 break 11 12 a = b.split() # ["greentea", "20"]のような形式でaに入る 13 key = a[0] 14 num = int(a[1]) 15 16 # 辞書に入力 17 s[key] = num 18 19 return s 20 21 22# 合計金額の計算 23def calc_the_amount(dic): 24 price = 0 25 s = {} 26 while True: 27 n = input('input drink name and charge:') 28 b = n.upper() 29 if b == 'THANK YOU': 30 break 31 32 a = b.split() 33 key = a[0] 34 num = int(a[1]) 35 36 price += dic[key] * num 37 s[key] = num 38 39 print(s) 40 return price 41 42 43if __name__ == "__main__": 44 dic = create_dict() 45 print(dic) 46 print("一人目") 47 first = calc_the_amount(dic) 48 print("二人目") 49 second = calc_the_amount(dic) 50 print("一人目の合計金額: %d" % first) 51 print("二人目の合計金額: %d" % second) 52

#出力結果
input drink name and charge:greentea 20
input drink name and charge:blacktea 30
input drink name and charge:milktea 50
input drink name and charge:CoFFe 40
input drink name and charge:thank you
{'GREENTEA': 20, 'BLACKTEA': 30, 'MILKTEA': 50, 'COFFE': 40}
一人目
input drink name and charge:coffe 40
input drink name and charge:thank you
{'COFFE': 40}
二人目
input drink name and charge:greentea 3
input drink name and charge:GreenTea 5
input drink name and charge:coFFe 8
input drink name and charge:blackTea 2
input drink name and charge:thank you
{'GREENTEA': 5, 'COFFE': 8, 'BLACKTEA': 2}
一人目の合計金額: 1600
二人目の合計金額: 540

投稿2021/06/03 07:14

irognodyci

総合スコア227

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問