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

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

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

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

Q&A

解決済

3回答

728閲覧

inputで受け取った値を基準に他の値を変更する方法

erumoa400

総合スコア14

Python

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

0グッド

0クリップ

投稿2021/02/08 02:19

inputで受け取った値が10~50のとき他の値もそれに合わせて変更させたいのですが、下のコードではなぜか一番右が基準になってしまいます。どうすれば一番したのようにinputの値を基準に出力できるでしょうか?

python

1food = { 2 "apple": 100, 3 "orange": 120, 4 "grape": 150, 5 "melon": 200 6} 7def food_cal(): 8 food_list = list(food.keys()) 9 user_food = input("食べ物を入力") 10 for user_food in food_list: 11 print(f"{user_food:10}", end="") 12 print() 13 for number in range(10, 60, 10): 14 x = number / food[user_food] 15 for user_food in food_list: 16 print(f"{x * food[user_food]:<10.2f}", end="") 17 print() 18""" 19出力 20食べ物を入力apple 21apple orange grape melon 225.00 6.00 7.50 10.00 2310.00 12.00 15.00 20.00 2415.00 18.00 22.50 30.00 2520.00 24.00 30.00 40.00 2625.00 30.00 37.50 50.00 27 28表示させたいもの 29食べ物を入力apple 30apple orange grape melon 3110.00 12.00 15.00 20.00 3220.00 24.00 30.00 40.00 3330.00 36.00 45.00 60.00 3440.00 48.00 60.00 80.00 3550.00 60.00 75.00 100.00 36""" 37

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

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

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

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

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

meg_

2021/02/08 02:39

> user_food = input("食べ物を入力") for user_food in food_list: print(f"{user_food:10}", end="") user_foodを上書いてませんか?
guest

回答3

0

forループを無くしてしまえば、結果的にuser_foodの重複もなくなる。

細かな点としては、入力した食べ物が辞書に含まれていなかったときの処理が必要だろう。
また、出力値が2~3桁になるのだから、数値は右揃えにすべきでは。

Python

1food = { 2 "apple": 100, 3 "orange": 120, 4 "grape": 150, 5 "melon": 200 6} 7 8 9def food_cal(): 10 food_list = list(food.keys()) 11 user_food = input("食べ物を入力: ") 12 if user_food not in food_list: 13 print("それは対象外です") 14 return 15 print(*[f"{f:>10}" for f in food_list], sep="") 16 for number in range(10, 60, 10): 17 x = number / food[user_food] 18 print(*[f"{x * food[key]:10.2f}" for key in food_list], sep="") 19 20 21food_cal()

result

1食べ物を入力: apple 2 apple orange grape melon 3 10.00 12.00 15.00 20.00 4 20.00 24.00 30.00 40.00 5 30.00 36.00 45.00 60.00 6 40.00 48.00 60.00 80.00 7 50.00 60.00 75.00 100.00

投稿2021/02/08 03:06

Daregada

総合スコア11990

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

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

erumoa400

2021/02/08 03:48

for文を使わずにfood名を表示させる方法は知りませんでした。参考にさせていただきます 回答ありがとうございます
guest

0

ベストアンサー

二ヶ所変数名(user_food)が重複しています。

user_food = input("食べ物を入力") for user_food in food_list: print(f"{user_food:10}", end="")
x = number / food[user_food] for user_food in food_list: print(f"{x * food[user_food]:<10.2f}", end="")

for文の変数名を変更しましょう。

投稿2021/02/08 02:44

編集2021/02/08 02:45
meg_

総合スコア10607

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

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

erumoa400

2021/02/08 03:42

user_food = input("食べ物を入力") for i in food_list: print(f"{i:10}", end="") print() for number in range(10, 60, 10): x = number / food[user_food] for v in food_list: print(f"{x * food[v]:<10.2f}", end="") print() と変更することで無事解決でしました。回答ありがとうございます
guest

0

python

1 user_food = input("食べ物を入力") # ここと 2 for user_food in food_list: # ここでuser_foodが被ってる 3 print(f"{user_food:10}", end="")

投稿2021/02/08 02:36

ozwk

総合スコア13532

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

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

erumoa400

2021/02/08 03:45

for文の変数部分でinputの値を使うと少し勘違いをしていました。 変数名を変更したことで無事解決しました。回答ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問