文章内の母音と子音を分けて各総数を出す式を作ってみたのですが、文章によっては正しく答えが出せないのですが、バグが見つけられません。
python3
1コード 2def kazoeru(bunsho, shiin): 3 countC=0 4 countV=0 5 alphabet_list=("abcdefghijklmnopqrstuvwxyz") 6 for i in bunsho: 7 if i in alphabet_list: 8 my_list =["a", "e", "i", "o", "u"] 9 if i not in my_list: 10 shiin=True 11 countC+=1 12 13 else: 14 shiin=False 15 countV+=1 16 if shiin==True: 17 return(countC) 18 else: 19 return(countV) 20 21 22bunsho=("but thy eternal summer shall not fade") 23print(kazoeru(bunsho, True)) 24print(kazoeru(bunsho, False)) 25
よろしくお願いします。
これではソースがまったくよめないので、「```python3」の直後と、最後の「```」の直前に改行を入れてください。
また、ソースコード内の改行も消えているので、貼り直してください。
申し訳ありません!入力操作がよくわからず間違った入力方法してしまいました。
モウイッポですね。 先頭の方にたぶん「```」 だけの行がありますので、その行を消してください。
あと、同じ関数などが2回 現れますが、これはどういう意味でしょう?
また、うまくいく例といかない例を、それぞれの結果と予想している結果をあわせて、出すことはできますか。
> 先頭の方にたぶん「```」 だけの行がありますので、その行を消してください。
そうならば、「python3」だけ長方形の中に入るはずなので、「```」 だけの行がどこにも無い、のではないかな??
質問者さん
質問のpythonのコードの一番最後の行のすぐ下に
```
だけの行を追加してみてください
```を最初の方のは消して、最後のところに入れてみました。これで合ってますでしょうか?
同じ関数が2回なのは、本当は一つにしたいのですが、上手くできなかったので分けてみました。一つにまとめる方法も教えていただければ助かります。
バグと思われるのは、Falseの時は正解が出るのに、Trueの時には間違った答えが出てしまいます。
よろしくお願いします。
すでにTakaiYさんも指摘されていますが、間違う場合の具体的な入力例と
現在の(間違った)結果と予想している(正しい)結果を明示ください。
どちら関数も正しい答が出ているようにみえますけどね。
片方は子音で片方は母音(分類はちょっとちがうけど)の数になってます。
また、関数内のshiinn変数も何もしてませんが。
そもそも、printのところの括弧の数が合ってないので、文法エラーです。
実行しているプログラムと質問文のプログラムが異なると言うことでしょう。
実行して結果が出ているプログラムをそのままコピペしましょう。
ご指摘いただきまして、ありがとうございます。コピペしました。
また、求めている結果は、21と10です。しかし24と10になってしまいます。
また、できれば、これを一つの関数でまとめたいのですが、色々試してもうまくいきません。その方法も併せてよろしくお願いします。
"lundberg backdrop us phd formate polemic"
の子音は24個なので合ってますね。21というのは何の数字??
質問者さん
一つ目の「def kazoeru(...」の関数定義のすぐ下の
bunsho=("lundberg backdrop us phd formate polemic")
を
bunsho=("but thy eternal summer shall not fade")
に変えたら、「but thy eternal summer shall not fade」内の子音数は21なので、
> 求めている結果は、21と10
になりますよ
> 文章内の母音と子音を分けて各総数を出す
は、下記のどちらの意味でしょうか?
・母音数と子音数を常に両方数えて、両方の結果を返す関数にしたい
・関数の引数「shiin」の「True/False」の指定で、子音数を数えるか母音数を数えるかを切り替えられる関数にしたい (一度に数えるのは子音数か母音数かどちらかだけ)
説明が不十分で申し訳ありません!母音数と子音数を常に両方数えて、両方の結果を返す関数にしたいです。
よろしくお願いします。すみません!プログラムそのものが考えていたものとずれていました。。。
「if shiin=True:ならreturn(countC)」という形にしたいです。Trueなら子音の総数。Falseなら母音の総数を返したいです。
うまく説明できなくて混乱させてしまって、申し訳ありません!