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

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

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

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

Q&A

解決済

3回答

892閲覧

pythonわからない

natu

総合スコア21

Python

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

0グッド

0クリップ

投稿2022/06/27 16:17

編集2022/06/27 16:18

■ 入力された文字列に応じて、置換をおこない、
実行例のように出力するプログラムを作成せよ
■ 入力された文字列内の
■ 「⻑」は「短」に置換し、「短」は「⻑」に置換する

python

1n1 = input("入力: ") 2 3if '長' in n1: 4 a = n1.replace('長', '短') 5 6elif '短' in n1: 7 a = n1.replace('短', '長') 8 9print(a)

このようにして例えば、「1日が長い」を入力すると「1日が短い」と返ってきます。
しかし、「一長一短」と入力すると「一長一長」のように片方しか置換されません。
どこが違いますか。

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

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

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

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

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

sachiko-kame

2022/06/27 17:30

すみません。 最初投稿したものよりより複雑なものだと思ったので私がお願いしてしまいました。 ここら辺の感覚が掴めていないので今後つかめるように努力します。
sachiko-kame

2022/06/27 17:34 編集

流れ等見えた方がいいと思った感じでした、、 https://teratail.com/questions/9etvwca52cs9ye#reply-d63w1z1nqckgai ちなみに現段階からどのようにすべきでしょうか? ・前の投稿を削除 ・今の投稿を削除、前の投稿を修正 ・今の投稿内容に前の投稿経緯を書き、同じような投稿をしている旨を伝える ・その他。
Zuishin

2022/06/27 22:00

> ここら辺の感覚が掴めていないので今後つかめるように努力します。 提示されているヘルプを読むだけの簡単な努力ですが、もう終わりましたか?
dodox86

2022/06/27 23:15

自分で考え、解決できるようになることと、とりあえず現状全く分からないので解決策を教えてほしいのと、どちらが優先するのでしょうね。
sachiko-kame

2022/06/28 04:45 編集

自分への返信かと思うので回答させていただきます。 通知等こないのでお返事漏れ等ありましたらすみません。 > 提示されているヘルプを読むだけの簡単な努力ですが、もう終わりましたか? 質問がより複雑で実現したいことに差がある、違う質問としても良いかもと認識した感じでした。 ここら辺の認識にズレが生じたので今後つかめるように努力しますとお返事させて頂いた感じでした。 似たような投稿はダメと言うことは理解しています。 > 自分で考え、解決できるようになることと、とりあえず現状全く分からないので解決策を教えてほしいのと、どちらが優先するのでしょうね。 人それぞれの考え方あると思いますが、私はどっちも大事かなと思っています。 今回の方は一回やってみてわからなかく質問されていたので、回答できればなと思った感じでした。 10分考えてわからなければ聞いてと言う方もいれば、 解決するまで自分で考えてみてと言う方もいて私はどっちもありだと思っています。
Zuishin

2022/06/28 04:46

済んだことを言っているのではなく、「努力します」とあったので、「必要なことはヘルプに目を通すことで、努力というほどのものではなく、今すぐできること」と言ったまでです。 「今後~します」というのはだいたい「うっせーよばーか」という意味で使われているので、もしそうであれば余計なことでした。
sachiko-kame

2022/06/28 04:52 編集

> 済んだことを言っているのではなく、「努力します」とあったので、「必要なことはヘルプに目を通すことで、努力というほどのものではなく、今すぐできること」と言ったまでです。 そういう意味合いだったのですね。 見た?を聞いているのかと思ってしまいました。 > 「今後~します」というのはだいたい「うっせーよばーか」という意味で使われているので、もしそうであれば余計なことでした。 すみませんが、それは偏見かと思います。 「今後~します」は私的に今後このようにしていこうと思います的な意味合いで非難した覚えはありませんでした、、非難的な風にとらわれるのは悲しいです、
Zuishin

2022/06/28 05:03

悲しくならないように、することをしましょう。さすがにもう読みましたよね?
sachiko-kame

2022/06/28 05:26

> 悲しくならないように、することをしましょう。 頑張ります! >さすがにもう読みましたよね? 以前も読んでいるのですが、妥協してもいいところもあるのではないかなと、、 ここは私のわがままなのですが、 丸投げ等の質問も人によるかなと、、、
guest

回答3

0

どこが違いますか。

「長」→「短」と、「短」→「長」のどちらか一方しか実行しないようになっているからですね。

先頭から1文字ずつ見ていくのがわかりやすいのでは?

投稿2022/06/27 16:25

otn

総合スコア84499

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

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

natu

2022/06/27 16:27

コメントありがとうございます。 その動作がなかなか上手くいきません。上手くいかないというより思いつくことができません。
sachiko-kame

2022/06/27 16:36 編集

上記回答見て思いついたのですが、 調べたい文字を1文字ずつの配列にしてやったりしたら上手くいくかもしれませんね。 一長一短 ↓ ['一', '長', '一', '短'] ↓ 配列をfor文で回して配列の中を変える。 ↓ 変換し終えた配列を文字列に戻す的な。 上記変換したいものが1文字であるならばの話ですが、 2文字と3文字とかで同じようなパターンだと難しくなりそうです、
natu

2022/06/27 16:41

しかし、inputで入力しているので、毎回結果が変わらないといけません。
natu

2022/06/27 16:42

そのようにリストにしてしまうと、その動作しか出来なくなりますよね?
sachiko-kame

2022/06/27 16:55

>そのようにリストにしてしまうと、その動作しか出来なくなりますよね? そうですね。一回こうしたい!みたいなパターンを出してみるといいかもですね。 以下今『natu』さんが実現させようと思っているパターンはこんな感じなのかと思ってます。 以下全部だとやはり難しそうです、、 ●『一長一短』を『一短一長』に変換出来ること。 ●『一長一短一長一短』を『一短一長一短一長』に変換出来ること。 ●『長い物差し』を『物差し長い』に変換出来ること。 ●『長い物差し長い物差し』を『物差し長い物差し長い』に変換出来ること。 ●『長いね物差し』を『物差しね長い』に変換出来ること。
natu

2022/06/27 17:03

そうです!そうです!
natu

2022/06/27 17:04

どうしたらいいか手付かずです、、
sachiko-kame

2022/06/27 17:08 編集

一回この実装から離れて、変換する以外の他の案を考えるもいいかもです。 背景は分かりませんが、 使ってくれる方にこの処理はできません。すみません。みたいに言うとか。 変換文字は1文字までですとか。 それか、一回、文字列で変換したい文字を他の記号に変えてから変換するもありかもしれません。 文字列の中に記号を入れれるようにしてあると『含まれていないものを使用する』みたいになりややこしそうですが、、 『含まれていないものを使用する』でなく『記号として使用するものを使用させない』みたいにしたらいいかもですね。 以下あくまで例です。 『一長一短』 ↓ 『一■一●』 ↓ 『■』を『短』に変換 ↓ 『●』を『長』に変換
sachiko-kame

2022/06/27 17:23

ちなみにこんな感じなら出来なくもないかも??と思ってます? https://paiza.io/projects/2KlKPS28S59AC_nU7zh9AA n1 = '一長一短一長一短' if '長' in n1: a = n1.replace('長', '■') else: a = n1 if '短' in a: b = a.replace('短', '●') else: b = a if '■' in b: c = b.replace('■', '短') else: c = b if '●' in c: d = c.replace('●', '長') else: d = c print(d)
otn

2022/06/27 21:48

> > 先頭から1文字ずつ見ていくのがわかりやすいのでは? > その動作がなかなか上手くいきません。上手くいかないというより思いつくことができません。 for文を学んでないと言うことですかね? それでは、for文を学ぶまで、この問題はお預けにしましょう。
Zuishin

2022/06/27 22:02

前の質問を読むと、replace を使えという条件があるみたいですね。
sachiko-kame

2022/06/28 04:40 編集

自分への回答かと思うものあったのでお返事させていただきます。 通知等こないのでお返事漏れ等ありましたらすみません。 > 前の質問を読むと、replace を使えという条件があるみたいですね。 条件あったのですね、見落としてました、、実現できればあまり気にされないと思っていました。
guest

0

自己解決

一度"X"に置いてから実行したらできました!
たくさんの協力の末思いつくことができました。

python

1n1 = input("入力:") 2 3n1 = n1.replace("短","X").replace("長","短").replace("X","長") 4 5print(n1)

ありがとうございました。

投稿2022/06/28 02:30

natu

総合スコア21

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

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

sachiko-kame

2022/06/28 04:31

よかったです! 私の不適切なお願いや不適切な回答で嫌な思い等させてしまいすみません。 今後このようなことがないように気をつけたいと思います。 一生懸命わからないことに向かっていく感じ素敵で尊敬すべきだなと思いました! これからも色々大変かと思いますが応援しています。
otn

2022/06/28 05:28

前の質問の回答と同じでは?
Zuishin

2022/06/28 05:40

https://teratail.com/questions/9etvwca52cs9ye 文字が違うだけで同じですね。 > たくさんの協力の末思いつくことができました 「思いつく」という日本語の意味も昔とは随分変わったようです。
guest

0

python

1print("一長一短".translate(str.maketrans('長短', '短長')))

投稿2022/06/27 23:34

ozwk

総合スコア13521

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問