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

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

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

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

Q&A

解決済

1回答

820閲覧

defとreturnを使って条件に合う文字を順に書き出したい。

dokugakusets

総合スコア10

Python 3.x

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

0グッド

0クリップ

投稿2021/07/01 07:19

#大文字の列、行替えして小文字の列、行替えしてそれ以外と出力したいです。

python3

1def naraberu(i): 2 for m in i: 3 if ord(m) in range(65, 90): 4 print(m, end="") 5print("") 6print(naraberu("BIG mac 3")) 7def naraberu(i): 8 for m in i: 9 if ord(m) in range(97, 122): 10 print(n, end="") 11print("") 12print(naraberu("BIG mac 3")) 13def naraberu(i): 14 for m in i: 15 if ord(m) in range(33, 64): 16 print(n, end="") 17print("") 18print(naraberu("BIG mac 3")) 19 20#できれば一つのdefでまとめたいのと、print(最後にnoneが出てきてしまいます。)ではなくてreturnを使いたいのですが、 21#その場合の繰り返し処理のやり方が分かりません。 22#結果は、BIG 23# mac 24# 3 25#というように、グループごとに行替えしたいです。何卒よろしくお願いいたします。 26

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

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

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

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

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

guest

回答1

0

ベストアンサー

なるべく原型を維持しつつ一つにまとめてみました。

python3

1def naraberu(txt): 2 result = ["", "", ""] 3 for m in txt: 4 if ord(m) in range(65, 90): 5 result[0] += m 6 continue 7 if ord(m) in range(97, 122): 8 result[1] += m 9 continue 10 if ord(m) in range(33, 64): 11 result[2] += m 12 continue 13 return "\n".join(result) 14print(naraberu("BIG mac 3")) 15# BIG 16# mac 17# 3 18 19print(naraberu("abC1deF0")) 20# CF 21# abde 22# 10

あと、多分ですがordを使わないほうが読みやすいと思います。
※TakaiYさんのご指摘に沿って修正。

python3

1def naraberu(txt): 2 result = ["", "", ""] 3 for m in txt: 4 if m.isupper(): 5 result[0] += m 6 continue 7 elif m.islower(): 8 result[1] += m 9 continue 10 elif not m.isspace(): 11 result[2] += m 12 return "\n".join(result) 13 14print(naraberu("BIG mac 3")) 15# BIG 16# mac 17# 3 18 19print(naraberu("abC1deF0")) 20# CF 21# abde 22# 10

投稿2021/07/01 07:47

編集2021/07/02 06:25
jeanbiego

総合スコア3966

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

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

TakaiY

2021/07/01 10:42

後半の例ですが、asciiで 33から64ということは、数字だけでなくて記号も入っているので、厳密にはちょっと違うかも。 スペースも外されているのもパイントか。 なので、elseにしてスペースを除外するのがいいのではないかと思います。 でも、大文字と小文字の間とか、小文字の後とか、漏れている記号もあるのでそこは質問者さんの本当の意図がどうなのかによりますね。
jeanbiego

2021/07/01 11:49

ご指摘の通りですね。「それ以外」と書いてあるのに、勝手に「数字」と思い込んでました。
dokugakusets

2021/07/02 05:52

ありがとうございます!!!!すごいです!continueは初めてです。調べて勉強します。 defの時にはreturnが必要だと思っていましたが、そうでない場合もあるのですね。勉強になりました。 ありがとうございました!
jeanbiego

2021/07/02 06:23

>defの時にはreturnが必要だと思っていましたが、そうでない場合もあるのですね。 そうでない場合は確かに在りますが、今回はreturnを使っています。 continueは、for文に対応しており、def naraberu自体は最後returnで値を返しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問