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

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

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

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

Q&A

解決済

2回答

799閲覧

pythonわからない

natu

総合スコア21

Python

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

0グッド

0クリップ

投稿2022/06/27 14:46

編集2022/06/27 16:07

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

python

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

このようにやりましたが「短い」と入力した時は「長い」になりますが、もう一方が動作しません。
どこが間違っていますか。
replaceを使って出力したいです。

例) 入力:一長一短
一短一長

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

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

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

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

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

Zuishin

2022/06/27 15:10

長を短に置換した後、短を長に置換しています。 よって、長短どちらも最終的に長になります。
natu

2022/06/27 15:13

それはなんとなくわかりますが、どのように直したらいいかが分からないです。
退会済みユーザー

退会済みユーザー

2022/06/27 15:18 編集

> どのように直したらいいかが分からない 一度長短以外の「別の文字」に置き換えて、最後にもう一度「別の文字」を狙った文字に直せば行けるはずです。 どうしても困ったら返信ください。あとひと踏ん張りなのできっと行けるはずです。
natu

2022/06/27 15:29

「別の文字」を狙って試みましたが、実行できませんでした。私もあとひと踏ん張りと思うのですが、できません。。
jbpb0

2022/06/27 23:01

> 「別の文字」を狙って試みました のコードを、質問を編集して追記してください (ここに書くのではなく、質問に追記する)
sazi

2022/06/28 03:50

translate()ではなく、replace()を使用する事に限定されているんですよね?
guest

回答2

0

ベストアンサー

困っていそうだったので書きます。

Python3

1# n = input("入力: ") 2n = "一長一短" # デバグがめんどくさいのでとりあえず「一長一短」を突っ込む 3 4print("変換前:", n) 5# 変換前: 一長一短 6 7# ・ 置換したい文字列は、長→短と短→長 8# ・ replaceで置換できる文字列は一種類しかない 9# ・ まず、長を置換から保護するために長→_にしておく。そこから短→長にする。 10# ・ 保護しておいた長の代わりの_を本来あるべき短で書き戻す 11ans = n.replace("長","_").replace("短","長").replace("_","短") 12 13print("変換後:", ans ) 14# 変換後: 一短一長

投稿2022/06/27 22:11

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

sachiko-kame

2022/06/28 04:44

すごいシンプルな回答で自分の回答が情けなりました、、高評価つけさせていただきました!
退会済みユーザー

退会済みユーザー

2022/06/28 14:51 編集

> 自分の回答が情けなりました そんなことないです。プログラムあるあるですが、ひらめいたり知っていたりすれば数秒で済むことが、ひらめかなかったり、知らないと数日かかったりします。私もこれでよくコケます。みんなで知恵を出し合っていければと思います。
sachiko-kame

2022/06/29 11:51

お返事いただけると思っていなかったので嬉しいです! 色々優しい言葉ありがとうございます! 私も知恵を出す一員になれるよう頑張っていきたいと思います!
guest

0

以下のように分岐が必要かと思います。変換した値を入れる変数的なものが必要なようです。
あと、気軽に以下のような試せるものあるので是非使ってみてください!
https://paiza.io/projects/vpOl_xauEOHoSw_6T1znKw

n1 = '短い' if n1 == '長い': print('a') a = n1.replace('長', '短') elif n1 == '短い': print('b') a = n1.replace('短', '長') print(a)

ちなみに現在は以下のような挙動になっているかと思います。

『短い』の時

# "短い".replace("長","短") => "短い" <<『長』が『短』に変換されるがそもそも『長』が存在しないので変換されない>> # "短い".replace("短","長") => "長い" <<『短』が『長』に変換される>>

『長い』の時

# "長い".replace("長","短") => "短い" <<『長』が『短』に変換され、『短い』になる。>> # "短い".replace("短","長") => "長い" <<『短』が『長』に変換される>>

投稿2022/06/27 15:16

編集2022/06/27 15:34
sachiko-kame

総合スコア334

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

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

sachiko-kame

2022/06/27 15:29

上記挙動で意図しか結果にならなくなってしまいました、、 最初やった時は問題なかったのですが、、 もしかしたら他の原因かもしれません、、
sachiko-kame

2022/06/27 15:35

上記内容修正しました。 問題ないかと思います。
natu

2022/06/27 15:42

回答ありがとうございます。 しかし求めている形と異なります。 例)入力:1日は長い 1日は短い 例)入力:まつ毛が短い まつ毛が長い このように出力したいです。
natu

2022/06/27 15:51

print("a")が出力されてしまいます
sachiko-kame

2022/06/27 15:52

紛らわしかったですね、 上記修正しました!
natu

2022/06/27 15:58

本当に何度申し訳ありませんが、「一長一短」のように同時に変換しようと試みましたが、上手くいきませんでした。
sachiko-kame

2022/06/27 16:04

確かにそれだと変換できませんね、、 上記になると途端にむずしくなりますね、、 きっとやるとなるとある程度必要なステップ以下かと思ってます。 ・『長』の文字あるところ検索 ※どこからどこまで的な位置検索的なもの ・『短』の文字あるところ検索 ※どこからどこまで的な位置検索的なもの ・『長』の文字あるところ検索した箇所を『短』変換。 ・『短』の文字あるところ検索した箇所を『長』変換。
natu

2022/06/27 16:08

先に伝えていなくて申し訳ありません。
sachiko-kame

2022/06/27 16:10

全然問題ないです! 今すぐコード提示出来ないので一旦他で質問たてて頂いた方がいいかもです、、(◍•ᴗ•。◍) やるとしたら結構めんどくさい感じになるのではないかな〜と思ってます、
natu

2022/06/27 16:11

ほんと助かります!!
sachiko-kame

2022/06/27 16:16

すみません。 すぐ回答できなさそうなものは、 もしかしたら回答しないかもしれないためお役に立てないかもしれません。(/ω\) なんか良さそうなサイトあればまた提示させていただきますm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問