つまらないものを自動化する私は現在自動化の第4章の練習を進めています。"リスト値が次のようになっているとします。'cats']リスト値を引数として取り、最後の項目の前にとを挿入して、すべての項目をカンマとスペースで区切った文字列を返す関数を作成します。あなたの関数はそれに渡されたどんなリスト値でも働くことができるべきです。私はPython(およびプログラミング全般)の絶対的な初心者なので、このコードをきれいにする方法についていくつかのアドバイスを得たいと思いました。それは任意のサイズのリストで動作しますが、私はSOに関するいくつかの他の解決策を検討しました、そしてこれを構築するための百万の方法があるようです。私の知る限りでは、タスクの説明では、1項目または2項目の入力リストの場合、結果の文字列の最後にドットを追加する必要はありません。2の場合はを分ける必要はありません。2項目のケースを扱うことができるようです。源オックスフォードコンマは大丈夫です。単項演算子ではなく、二項演算子です。源@pjzには非常に良い点がいくつかありましたので、レビューでそれらをスキップします。エラーメッセージを表示する代わりに、適切な例外を発生させます。長さ1と2の入力にピリオドを追加しますが、それ以上の出力には追加しません。Pythonリストスライスを使用すると、特別な場合を実際に削除できます。これは2つの提案された改善、1つはより簡単、もう1つはpythonicです。例外が発生したことを検証するための短いテストスニペットも含めました。素晴らしいアドバイスです。軽微な問題:なぜ例外なのか空のリストを連結することは完全に有効な操作です。'.join([])も動作します。源ありがとうございました!元の質問でも同様の実装があったため、例外を含めましたが、質問者が例外の概念に精通していないようでした。自分でコードを解決しようとしているのであれば、それを含めないでください。エラーメッセージを出力するのであれば、例外を発生させます。源この答えは、あなたが作成したコードに関するものではありませんが、それをもう一度やろうとした場合の問題への取り組み方に関するものです。推奨されているので、ここで使用します。"リストの値が次のようになっているとします。'cats']引数としてリスト値を取り、すべての項目をカンマとスペースで区切った文字列を返し、最後の項目の前に挿入する関数を作成します。ここで実行する必要がある主な機能は何ですか?簡単に言うと、コードの主な機能は、リスト内の値を取得してこれを文字列に変換することです。これは、すぐにstring.join()がこれに適した関数になることを示唆しているはずです。結局のところ、文字列を好きな部分文字列と結合することができます。'.join(list_of_strings)次のような変換が得られます。cats'これでほぼすべての作業が完了しました。input.次のいずれかの行でこれを実行できます。{list_of_strings[-1]}'これによって入力が変更されないようにするため(他の場所で再利用される可能性があります)、まずそのコピーを作成してください。簡単な方法は、元のものから新しいリストを作成することです。list(input_list_of_strings)これらすべてをまとめると、結果としてかなり単純な関数が得られます。源@TemporalWolfはそうします。仕事中の私のマシンの1つは空隙があり、2.4しか動作しません...私はそのシステムに%表記を使うことに慣れてきました。私は他のどこでも3.6を使っています。構文を使用するのではなく、より小さな関数を定義するための簡単な方法です。リストスライス、および文字列とリストの両方の連結も使用します。.format()を使用する方法の1つが考えられます。同様に統合されています。更新:2項目未満のリストではこれが失敗することに気付いたばかりです。それで、それはあなたがあなたの入力でなさなければならないもう一つの仮定です。上記の2つのケースを扱うわずかに大きい関数で上記をラップするのは比較的簡単です。dube源@victorantunes技術的ではない英語の文法でも、豆腐の後のカンマは広く受け入れられている使い方で、オックスフォードのカンマです。後の最後のカンマは、この答えを誤りにします。私の悪い私は完全にそのスニペットを飛ばして、そして直接文法モードに入りました。'])を試してみてください。'が返されますが、これは「cats」であるはずです。/i>しかしあなたのコードは空の入力リストを持つIndexErrorを投げます。"あなたの関数はそれに渡されたどんなリスト値でも動作できるはずです。源@victorantunes私の最初の質問ではありませんが、希望する出力をりんご、バナナ、豆腐、猫として明示的にリストしています。final)この解決法はどの読者にとっても明らかであるべきです、そして私には問題定義のエンコーディングとして読んでください:空でない単語のリストを与えられたら、それらをコンマで結合してください。複数ある場合は、最後の単語の前に単語「and」を追加します。アンパック操作は空の入力に対してValueErrorを送出するので、このコードは空のリストを特別な場合に扱う必要はありません。これが望ましい動作であればこれをキャッチして空の文字列を返すことができます。varadiac引数を使用してインターフェイスを明確にすることもできます。final)これは次のように呼ばれます。後のコンマは存在しません。私の母国語(ドイツ語)では、これも間違いです。後のコンマはオックスフォードのコンマです。それを使用するかどうかは興味深い質問ですが、ここでは議論の余地があります。仕様に含まれているからです。源@Graipherが毎日何か新しいことを学んでいると思います。'正しくないと叫ぶこと'でした。