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

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

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

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

Q&A

解決済

1回答

1461閲覧

英文から母音の数をカウントして多い順に並べる

退会済みユーザー

退会済みユーザー

総合スコア0

Python

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

0グッド

0クリップ

投稿2019/05/04 15:06

編集2019/05/04 17:46

前提・実現したいこと

英文を受け取って母音の数をカウントし、頻度の多い順にタプルで返す関数を作りたい。

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

関数が定義できていないと言われてしまう

###言語名
Python

Python

1def vowels_sort(s): 2 #大文字に統一 3 ups = s.upper() 4 5 #母音文字の出現回数をカウント 6 c_a = ups.count('A') 7 c_e = ups.count('E') 8 c_i = ups.count('I') 9 c_o = ups.count('O') 10 c_u = ups.count('U') 11 12 rdic = {} 13 rdic[c_a]=['A'] 14 15 if c_e not in rdic: 16 rdic[c_e]=[] 17 rdic[c_e].append('E') 18 19 if c_i not in rdic: 20 rdic[c_i]=[] 21 rdic[c_i].append('I') 22 23 if c_o not in rdic: 24 rdic[c_o]=[] 25 rdic[c_o].append('O') 26 27 if c_u not in rdic: 28 rdic[c_u]=[] 29 rdic[c_u].append('U') 30 31 #出現回数の降順に逆引き辞書を引いていき、その回数出現した文字を得る 32 freq_to_char_keys = list(rdic.keys()) #逆引き辞書のキー、出現頻度、のリストをつくる。 33 freq_to_char_keys.sort(reverse=True) #キーを降順で整列する。 34 35 result = [] #空リストを作成 36 for freq in freq_to_char_keys: #キーから頻度を一つづつ取り出す。 37 result += rdic[freq] # 頻度に対応するリストを連結していく。 38 39 #タプルにして返す 40 return tuple(result)

###入力

Python

1print((vowels_sort("Is this a pen?") == ('I', 'A', 'E', 'O', 'U')) 2 or (vowels_sort("Is this a pen?") == ('I', 'A', 'E', 'U', 'O')) 3 or (vowels_sort("Is this a pen?") == ('I', 'E', 'A', 'O', 'U')) 4 or (vowels_sort("Is this a pen?") == ('I', 'E', 'A', 'U', 'O')))

エラーメッセージ


NameError Traceback (most recent call last) <ipython-input-6-0632e14ec1e2> in <module> ----> 1 print((vowels_sort("Is this a pen?") == ('I', 'A', 'E', 'O', 'U')) 2 or (vowels_sort("Is this a pen?") == ('I', 'A', 'E', 'U', 'O')) 3 or (vowels_sort("Is this a pen?") == ('I', 'E', 'A', 'O', 'U')) 4 or (vowels_sort("Is this a pen?") == ('I', 'E', 'A', 'U', 'O'))) NameError: name 'vowels_sort' is not defined

補足情報(FW/ツールのバージョンなど)

別のエラーメッセージも出てしまいました。

------------------------------------------------------------------------ IndexError Traceback (most recent call last) <ipython-input-11-0632e14ec1e2> in <module> ----> 1 print((vowels_sort("Is this a pen?") == ('I', 'A', 'E', 'O', 'U')) 2 or (vowels_sort("Is this a pen?") == ('I', 'A', 'E', 'U', 'O')) 3 or (vowels_sort("Is this a pen?") == ('I', 'E', 'A', 'O', 'U')) 4 or (vowels_sort("Is this a pen?") == ('I', 'E', 'A', 'U', 'O'))) <ipython-input-9-aba722a3ba90> in vowels_sort(s) 23 result = [] 24 ---> 25 result.append(rdic[freq[0]].pop(0)) 26 result.append(rdic[freq[1]].pop(0)) 27 result.append(rdic[freq[2]].pop(0)) IndexError: pop from empty list

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

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

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

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

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

iwamot

2019/05/04 15:35

コードが読みづらいです。読めるように編集していただけないでしょうか。
hayataka2049

2019/05/04 16:23 編集

コードブロックのマークダウンをつかってください。 https://teratail.com/help#about-markdown ```python ここにコードを書く ``` また、実際に出力されるエラーを書いてください。
hayataka2049

2019/05/04 17:12 編集

このサイトの仕様ではコードブロックのマークダウンを使わないとインデントがすべて消えます。逆に、使えば#などはそのまま表示されます。
退会済みユーザー

退会済みユーザー

2019/05/04 17:20

ご指摘ありがとうございます。編集したのでよろしくお願いします。
hayataka2049

2019/05/04 17:37

とりあえず最後の行のdef vowels_sort(s): は要らない気がします
hayataka2049

2019/05/04 17:59

追記に関してはーエラー部分のコードが載ってないと回答無理です
退会済みユーザー

退会済みユーザー

2019/05/05 01:04

コードはこれで全部です。
hayataka2049

2019/05/05 08:50

result.append(rdic[freq[0]].pop(0))のような記述が示されているコードに見当たりませんが?
guest

回答1

0

ベストアンサー

Jupyterで実行する場合、通常では1セルずつ実行されます。

関数定義を行ったセル上にカーソルを合わせた上でそのセルを実行し、下のセルを実行するか、Cell > Run All を実行して一括で実行するとエラーが解消するはずです。

投稿2019/05/04 17:39

編集2019/05/04 17:39
hayataka2049

総合スコア30933

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

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

退会済みユーザー

退会済みユーザー

2019/05/05 08:56

もう一度実行したらエラーが消えました。修正依頼をくださった方、回答をくださった方本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問