実現したいこと
今度は任意の基準で「最も〇〇」なものを選び出せるようにします。
longest_stringを変更し、longer_stringの代わりに引数で指定した任意の関数を比較に使うmost_somethingを書きなさい。
適当な文字列のリストと、文字列2個を引数として文字数の少ない方を返すlambda式を引数としてmost_somethingを呼び出し、最も文字数の少ないものが選ばれることを確認しなさい。
発生している問題・分からないこと
自分なりにやってみたが、結果が出力されずどこが間違っているのかも具体的にわからない。
また、4個あるとlambda式を使って16通りのものを考慮しないといけないため、moji1,moji2という変数を使ってみたが、スッキリできる方法を教えていただきたいです
該当のソースコード
#最もなものを選び出せる関数を定義する def most_something(alist): #4つの文字列の要素からなるリストを作成 alist=[toefl,ielts,sat,toeic] #適当な文字列のリストの要素の定義づけ first=alist[0] second=alist[1] third=alist[2] fourth=alist[3] #lambda moji1==first or second moji2==third or fourth shorter=lambda moji1,moji2: moji2 if len(moji1)>len(moji2) else moji1 result=most_something(alist,shorter) print(result)
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
なかなか解決につながるものを見つけられなかった
補足
特になし
何処が間違っているか?という以前に、プログラムとしての体を為してないです。
今回の課題の前に、「longest_string という関数を使って、文字列のリストを与えると、その中で最長の長さの文字列を返す」という関数の課題があったはずですが、その正解プログラムをまず理解するのでしょうかね。
> 4個あるとlambda式を使って16通りのものを考慮しないといけないため、
配列(list型)や、ループによる繰り返しという概念も理解しましょう。
