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

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

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

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

Q&A

解決済

3回答

511閲覧

指定した文字の置き換え

fdd

総合スコア28

Python

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

0グッド

0クリップ

投稿2020/05/03 07:23

0から2の数字をランダムに入力し各数字ごとに指定されたアルファベットに置き換えるプログラムを作成しています。
0→C 1→A 2→B
以下のサイトよりreplaceを使用し、文字の置き換えを試しましたが、リストの添え字ごとに文字を変換させるプログラムが分からず止まっています。ご教授の方よろしくお願いします。
replace参照

入力例 21201
期待値 BABCA

python

1a = input() 2c = list(a) 3b = len(a) 4 5for i in range(b): 6 if c[i] =="0": 7 d = a.replace("0","C") 8 print(d) 9 elif c[i] =="1": 10 d = a.replace("1","A") 11 print(d) 12 elif c[i] =="2": 13 d = a.replace("2","B") 14 print(d) 15#入力 21201 16 17#出力 B1B01 18#  2A20A 19# B1B01 20# 212C1 21# 2A20A 22

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

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

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

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

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

guest

回答3

0

添字で書くならstr.replaceは関係ないですし、結果を代入するべきなのはcの要素です。
(か、結果のlistを別に作るか)

質問のコードを尊重してやるなら、こんな感じになるんじゃないでしょうか。

python

1a = input() 2c = list(a) 3b = len(a) 4 5for i in range(b): 6 if c[i] =="0": 7 c[i] = "C" 8 elif c[i] =="1": 9 c[i] = "A" 10 elif c[i] =="2": 11 c[i] = "B" 12 13print("".join(c))

投稿2020/05/03 09:29

hayataka2049

総合スコア30933

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

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

0

こんにちは。
入力例 21201 に対して 0→C 1→A 2→B と変換し終わった結果を出力したいということですね。
実装としては別の方の解答でよいと思いますが、考え方について補足したいと思います。

そもそも期待した出力が得られていないのは、毎回違う変数をつくってprintしているからです。
d = a.replace(~)としていますが、これではfor文で回している値だけ(A,B,Cのどれか)に変換した文字列になります。for文の中で宣言した変数なので、次のループではまた初期化されるからです。
ちなみに文字列をリストにしなくても、for文で回すことはできます。
あえてfor文で実装すると以下のようになります。

python

1def main(): 2 s = input() 3 d = {"0":"C", "1":"A", "2":"B"} 4 5 ans = "" 6 for x in s: 7 y = d.get(x) 8 if y is None: 9 ans += x 10 else: 11 ans += y 12 13 print(ans) 14 15if __name__=="__main__": 16 main()

投稿2020/05/03 07:48

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

きれいではないけど、こんなイメージですか?

python

1a = input() 2 3d = a.replace("0", "C").replace("1", "A").replace("2", "B") 4 5print(d)

目的からすると translate の方が良いかも。

python

1a = input() 2 3d = a.translate(str.maketrans({"0":"C", "1":"A", "2":"B"})) 4 5print(d)

投稿2020/05/03 07:36

編集2020/05/03 07:46
Yasumichi

総合スコア1773

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問