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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

4回答

133閲覧

1行に入力された文字列から特定の文字の場合は他の文字に変換して出力したいです

sanster

総合スコア14

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/04/28 08:16

編集2019/04/28 08:18

前提・実現したいこと

1行に入力された文字列から特定の文字の場合は他の文字に変換して出力したいです。

例 入力された暗号を解読せよ!ヒント:(小川)(眼鏡)(いがこ)(ほがつ)
#各:(お→わ)(め→ね)(い→こ)(ほ→2)と変換します
入力値
おんおん!めいほ!

  上記の場合、指定の文字以外はそのまま出力する

  期待する出力
わんわん!ねこ2!

という感じで咄嗟に作った例なのでクオリティ面での指摘はご遠慮ください。

発生している問題・エラーメッセージ

上例のように入力された文字列に","やスペースなどがない場合、分割してリストに格納する方法がわかりません。そもそもリストを使って処理するものなのかも分かりません。。。

エラーメッセージ

### 該当のソースコード python 3 n = input() list = [n] #入力された文字列をリスト化 for i in range(0,-1): #入力された文字列の先頭から末尾までのイメージ #リストの中に特定の文字があった場合、その文字を他の文字に変更(お→わ)等                               ### 試したこと ### 補足情報(FW/ツールのバージョンなど) 説明不足なところがございました追記いたしますのでご指摘ください。 よろしくお願いします。

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

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

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

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

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

guest

回答4

0

一文字対一文字なら、str.translateで一発です。
使い方については別途お調べ下さい。

なお、前回の質問と同じような方法でもできます。

投稿2019/04/28 08:45

LouiS0616

総合スコア35660

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

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

sanster

2019/04/28 08:59

ありがとうございます。 あまりプログラミングを掴めておらず行ったり来たりを繰り返しています。 精進いたします♪ str.translateもググります ;)
guest

0

単純に replace()ではダメ?

python

1str1 = 'わんわん' 2str2 = str1.replace('わ', 'お') 3print(str2) # おんおん

必要ならば、繰り返す。
他にもありそうですが。

投稿2019/04/28 08:37

pepperleaf

総合スコア6383

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

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

can110

2019/04/28 08:44

単純にreplaceを使ってしまうと、お→い、い→え とする場合 「おいおい」が「いえいえ」ではなく「ええええ」となってしまいます。
pepperleaf

2019/04/28 08:50

まあ、確かにそうですが、この手の連鎖は注意して行うもの、、、 というより、そんな連鎖が起きる設定自体が問題って気がします。
can110

2019/04/28 08:57

私が例にあげた問題設定もアリ(やりたいこと)だと考えています。 そのうえで一括置換だと思わぬ結果になり注意すべきだと思いコメントしました。
sanster

2019/04/28 09:01

replaceが初めましてでした。。。 常用(覚えるべき)関数って一体どのくらいあるのでしょうか? 重ね重ね失礼します。
guest

0

ベストアンサー

文字列はリストにしなくてもfor c in 文字列のようにすると一文字ずつ取り出せます。
あとはif判定すればよいです。

Python

1n = input() 2for c in n: # 一文字ずつ取り出せる 3 if c == 'お': 4 c = 'わ' 5 print(c,end='') # 改行しない 6 7print('')

投稿2019/04/28 08:29

can110

総合スコア38266

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

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

sanster

2019/04/28 09:10

for c in ~;はいいコードですね???? また一歩上達した気がします。 You Are ベストアンサー 冷凍してくださった皆さまもありがとうございます。 n = input() for c in n: if c == '冷凍': c = '解答' print(c,end='') print('')
guest

0

x.py

python3

1RULES = { 2 'お': 'わ', 3 'め': 'ね', 4 'い': 'こ', 5 'ほ': '2' 6 } 7 8def trans_str(line): 9 return ''.join([RULES.get(c, c) for c in line]) 10 11while True: 12 line = input() 13 print("->") 14 print(trans_str(line))

実行例
!イメージ説明明](c23ec99b9b1f69897d79bff789f9c93e.png)

投稿2019/04/28 13:00

katoy

総合スコア22324

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問