実現したいこと
まず、引数として文字列を2個受け取り、文字数の多い方を返す関数longer_stringを書きなさい。文字数が同じ場合は、どちらを返してもかまいません。
次に、引数として文字列のリストを1個受け取り、その中で文字数の一番多い文字列を返す関数longest_stringを次のようにして書きなさい。
リストの先頭の文字列と、残りのリストに対してlongest_stringを再帰的に呼び出した結果を、longer_stringで比較します。
発生している問題・分からないこと
このコードでエラーが発生したが、なぜダメなのかがわからない
#文字数の多い方を返す関数を定義
def longer_string(moji1,moji2):
if len(moji1)>len(moji2):
return moji1
elif len(moji1)==len(moji2):
return moji1
else:
return moji2
#何か引数に代入してみる
longer_string("sakurai","ono")
#リストの中で一番多い文字列を返す関数を定義する
def longest_string(moji_list):
#リストの先頭と残りのリストを定義
first=moji_list[0]
others=moji_list[1:]
#先頭以外の残りのリストの中で一番長いものを判定
others_1st=longest_string(others)
return longer_string(first,others_1st)
#5つの要素からなるリストを生成
moji_list=["sakurai","ono","ninomiya","aiba","matsumoto"]
print(longest_string(moji_list))
エラーメッセージ
error
1list index out of range
該当のソースコード
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
友人もわからないようである
補足
特になし
![guest](/img/icon/icnUserSample.jpg)
回答3件
あなたの回答
tips
プレビュー