プログラミングの問題について質問です。
Pythonで解きました。
[問題]
変数1、変数2が用意されていて、入力された命令に対して以下の動作を行います。
・SET i a : 変数 i に値 a を代入する (i = 1, 2)
・ADD a :「変数 1 の値 + a」を計算し、計算結果を変数 2 に代入する
・SUB a :「変数 1 の値 - a」を計算し、計算結果を変数 2 に代入する
入力例
3 (命令の個数 n が与えられます)
SET 1 10
SET 2 20
ADD 40
出力例
10 50(変数1、変数2を半角スペース区切りで表示)
[私の回答]
n = int(input()) # nは入力回数
str_list = []
for i in range(n):
str_list.append(list(input().split()))
print(str_list)
a=0
b=0
if "SET" and 1==str_list[0] and int(str_list[1]):
a+=int(str_list[2])
elif "SET" and 2==str_list[0] and int(str_list[1]):
b+=int(str_list[2])
elif "ADD"==str_list[0]:
ここまで書いていて途中でよく分からなくなってしまい止めてしまいました。
Pythonに詳しい方、どのように解いたら良いか教えて頂けると助かります。
宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
インデントがどうなっているのかわからないので、どこからどこまでがブロックなのか不明だが(だからpythonは嫌い)
for が if-elif文までカバーしているのなら、わざわざstr_listにアペンドして全命令の大きなリストを作る合理的な理由はありません。
ちゃんと動作するかどうか確認はしていないけど、こんな感じ?
a=0
b=0
n = int(input()) # nは入力回数
for i in range(n):
str_list = list(input().split())
print(str_list)
if "SET"==str_list[0] and str_list[1]=="1":
a = int(str_list[2])
print(a, b)
elif "SET"==str_list[0] and str_list[1]=="2":
b = int(str_list[2])
print(a, b)
elif "ADD"==str_list[0]:
b = a + int(str_list[1])
print(a, b)
elif "SUB"==str_list[0]:
b = a - int(str_list[1])
print(a, b)
print()
print(a, b)
回答ありがとうございます。
しっかりと動きました!
質問なのですが、SUBの所はb=int(str_list[1])-aだと問題文から、書きながら思ったのですが、逆である理由を教えて欲しいです。
No.2
- 回答日時:
> 質問なのですが、SUBの所はb=int(str_list[1])-aだと問題文から、書きながら思ったのですが、逆である理由を教えて欲しいです
変数aを問題文中とプログラム中の両方で使っているから混乱しているのだと思います。
プログラムの中のa,bは問題中の変数1,2に対応します。
問題文中のaは、ある任意の値をaと表現しているだけで、プログラムの中のa,bとは無関係です。
問題をこう書き換えれば混乱しないでしょう。以下の問題文は本質的にはもとの問題文と同じです。
変数1、変数2が用意されていて、入力された命令に対して以下の動作を行います。
・SET i X : 変数 i に値 X を代入する (i = 1, 2)
・ADD Y :「変数 1 の値 + Y」を計算し、計算結果を変数 2 に代入する
・SUB Z :「変数 1 の値 - Z」を計算し、計算結果を変数 2 に代入する
納得できました。
本当にありがとうございます。
変数を置くときに、名前付けには注意します。
この度は回答して頂きありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
この曲のピアノの最後の和音が...
-
どちのほうがすきですか?
-
STLのlistで重複するものだけを...
-
JSONで文字列が長い時
-
Application.ScreenUpdating = ...
-
int(input("○○"))の使い方
-
<SELECT>タグの折り返し
-
ACCESS テキストボックスを隙...
-
16進の10進変換について
-
メモリをアドレスを直接指定し...
-
シェルスクリプトで、空白(ス...
-
関数「exists」と「defined」の...
-
前日の日付取得するには?
-
pythonの この問題が分かりませ...
-
formで特定のinputを送信しない...
-
チェックボックスのCGIへの値の...
-
pythonの*
-
pythonで演算子を変数に代入す...
-
VBAでPDFのコピーとリネームを...
-
実行時エラー 3020の対策
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Python - Excel で Webからデー...
-
STLのlistで重複するものだけを...
-
どちのほうがすきですか?
-
ギブアップ!!
-
Ademの関係(Schemeについて教...
-
【python】辞書作成(ネスト)を...
-
可変引数をconstで参照渡し
-
C言語:単語カウント
-
texで"図"または"Fig"を外したい
-
No.799238の続き
-
Pythonの配列を入力する方法に...
-
Pythonでリストの要素の順番を...
-
PerlでXMLを解析して出力する。
-
構造体のアクセスについて
-
この曲のピアノの最後の和音が...
-
JSONで文字列が長い時
-
Application.ScreenUpdating = ...
-
formで特定のinputを送信しない...
-
VBAでPDFのコピーとリネームを...
-
16進の10進変換について
おすすめ情報