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

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

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

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

Q&A

解決済

2回答

1138閲覧

pythonで関数を使ったときの答えを複数用意したい(初心者)

rink

総合スコア80

Python 3.x

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

0グッド

0クリップ

投稿2019/04/29 14:05

題の通り、答えを複数用意したいです。

python

1 2ay = [] 3def guess_encoding(s): 4 encodings = ["ascii", "utf-8", "euc-jp", "shift-jis"] 5 for enc in encodings: 6 try: 7 s.decode(enc) 8 except UnicodeDecodeError: 9 continue 10 else: 11 return enc 12 continue 13 else: 14 return "" 15 16ay.append(guess_encoding(b'\xa4\xa2\xa4\xa4\xa4\xa6\xa4\xa8\xa4\xaa')) 17print(ay) 18#答えを複数参照できるようにしたい

答えは"shift-jis"と "euc-jp" のふたつが出力されるはずなのですが、pythonを始めたばかりで、javaの配列が抜けきっておりません。どうすれば答えを複数出力することがきますでしょうか。
よろしくお願いします。

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

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

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

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

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

guest

回答2

0

リストayにappendしている意図がよくわかりませんが、表題から、「guess_encoding関数が、エラにならないエンコーディングのリストを返すようにしたい」ということだとして回答します。

すでに、for文で1エンコーディングずつチェックをして例外になる場合とそうでない場合を分ける処理をしていますので、これを利用するなら、for文の前に空リスト(arとか)を用意して、例外にならなければそのリストにappendし、最後まで回ったらarを返すようにすればよいのではないかと。

投稿2019/04/29 15:14

TakaiY

総合スコア12745

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

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

rink

2019/04/29 15:17

ご回答ありがとうございます! わかりやすくありがとうございました!
guest

0

ベストアンサー

関数の返り値をカンマ区切り、配列にすることで複数返すことができます。

python

1def guess_encoding(s): 2 encodings = ["ascii", "utf-8", "euc-jp", "shift-jis"] 3 ay = [] 4 for enc in encodings: 5 try: 6 ay.append(s.decode(enc)) 7 except UnicodeDecodeError: 8 ay.append('') 9 #pass #空白を入れたくないならこっち 10 11 return ay 12 13 14ay = guess_encoding(b'\xa4\xa2\xa4\xa4\xa4\xa6\xa4\xa8\xa4\xaa') 15print(ay)

投稿2019/04/29 15:06

mistn

総合スコア1191

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

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

rink

2019/04/29 15:18

ご回答ありがとうございます! 分かりやるく丁寧に教えてくださり理解できました。passも知れました! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問