Python(14)入門

Python入門(14/18)
**セクション14 **アプリケーションケース(2)

みなさん、こんにちは!昨日のケース分析に続き、今日も新しいケースについて説明します。

ケース4.売上に基づくボーナスの計算

要求する:

(ネットワークの場合)企業は、パフォーマンスに基づいてボーナスを計算するためのルールを次のように規定して、段階的な販売パフォーマンス計画を実装します。

(1)売上高が10万以下の場合、10%が発生します。

(2)100,000を超え200,000以下の売上高は7.5%発生します。

(3)売上高が20万を超え、40万以下の場合、5%が発生する。

(4)40万を超え60万以下の売上の一部については、3%が発生するものとする。

(5)60万を超え100万以下の売上の場合、1.5%が発生する。

(6)売上高が100万を超える部分については、1%が発生します。

プロジェクトの要件:誰かの売り上げを入力して、支払うべきボーナスをすぐに受け取ります。

需要分析:

(1)特に注意が必要なのは、ボーナス計算ルールはパフォーマンスセグメントに従って設計されていることです。つまり、階層全体のパフォーマンスボーナスの計算は、最高水準に従って計算されるだけでなく、段階的に合計される必要があります。

(2)サブセクションの合計の問題を理解した後の解決策は、パフォーマンスカバレッジの範囲に従って、サブセクションで計算してから追加することです。

(3)パフォーマンスカバレッジの範囲を判断するには、ブランチステートメントを使用する必要があります。

売上に基づいてボーナスソースコードを計算します:

コード分析:

(1)言うまでもなく、最初の行は、ユーザーが入力したパフォーマンス番号を受け取るために使用されます。float()は何をしますか?これ(恥ずかしい)...データタイプの変換。input()がすべての文字列を受信したという意味ではありませんか?対処しなければならないのは数字で、おそらく小数です。結局のところ、1万元です。小数点の後の1は1000の海です。

(2)ブランチステートメントがすべてif ... elif ... elif ...であることを知っていますが、最初のifはどこから始まりますか?もちろん、100,000以内の最小の最初のセグメントインデックスから判断を開始します。条件が満たされると、このセグメントのパフォーマンスは10%発生します。もちろん、次の段落はelifです。100,000を超え200,000未満と判断された場合、条件が満たされると、この段落のパフォーマンスは7.5%になります。終わりましたか?もちろんできません!それ以外の場合は、10未満で販売する方が良いです。上位のパフォーマンスは、前のパフォーマンスをカバーする必要があることを意味します。これは議論の余地がありませんよね?したがって、以前のパフォーマンスボーナスも必要です!これを無視してはいけません。見逃すと死んでしまいます(苦労して稼いだお金です)!

(3)OKなど、もちろん、すべての可能性を判断する必要があります。どの可能性を見逃した場合、最も可能性の高いイベントは、強力な営業チームによって報告された戦闘状況です。あなたが逃した可能性のある状況の種類を正確にカバーします、そして、結果はどうなりますか?ほかに何か?バグがありました!では、ブランチステートメントを書くために最も重要なことは何ですか?完全なカバレッジが最も重要です!これを「徹底的思考」といいます。 (急いで、中学校の中国語の論理クラスで言及されている「徹底的な方法」を補ってください。それは少し印象的ですよね?)

(4)言うまでもなく、最後にボーナス額を見せて見せびらかしてください!赤い封筒を開ける感覚を体験してください。

ケース5、バブルソート関数を書く

**要件:**バブルソート方法は、古典的なソートアルゴリズムモデルです。Pythonを使用してバブルソートアルゴリズムの関数を記述し、任意の1次元シーケンスオブジェクトをサポートしてソートを実現し、同じサイズの要素をサポートできます。

需要分析:

(1)バブルソーティングの一般的なアルゴリズムは、シーケンスをトラバースし、各要素を取得して残りのすべての要素と比較します。それよりも小さいことがわかった場合は、それを置き換えます。比較が終了すると、現在のループラウンドが取得されます。最小値を繰り返してから、残りのセットに対して同じ方法を使用し、最小値を順番に取得して新しいリストに追加し、最後に小さいものから大きいものへとリストを取得します。

(2)バブルソートアルゴリズムには、通常、移行方法と交換方法の2種類がありますが、ここでは2つのアルゴリズムを示します。

(3)同じサイズの要素をサポートする必要があるため、コレクションタイプのデータ構造を使用しないことに注意してください。

1、 移行方法のソースコード

コード分析:

(1)ソート関数を作成してから、名前...を作成する必要があるので、orderby()を呼び出すだけですが、なぜ関数を使用するのですか? (恥ずかしいです!)もう一度強調したいと思います:**関数は繰り返し再利用できるコードブロックであり、呼び出された場合にのみ実行されます! **兄弟、機能の重要性は本当に忘れがちです。

(2)x = list(x)、これは何ですか?明らかに、関数によって渡されたパラメーターx(ソート可能なデータシーケンスである必要があります)はリストリストに変換されますが、なぜそれを変換したいのですか?前述の4つのデータ構造の最初のリストが操作に非常に便利だからではありません。何でもできます。曲がっているとは思わないでください。

(3)次に、y = []、これがわからない場合は、すぐに壁に向かいます。予備の空のリストyを作成すると、その有用性がすぐにわかります。事前にここでyを準備する方法を教えてください。私の予言ではありません。壁に何度も遭遇し、長い記憶を持っているからではありません。したがって、将来コードを記述して不完全に記述した場合、それは正常です。あなたは人間だからです。 「偉大な神」には常にいくらかの道があります。心配しないで、一歩一歩進んでください。

(4)次のコードは、解釈するために焦点を当てる必要がある部分です。まず、xリストをトラバースする2つのレベルのループネスティング(最初のレベルのwhileループ)があることに注意してください。バブリングによると、これは間違いなく問題ありません。並べ替えの基本的な考え方は、各値を相互に比較する必要があります。OK、1つ取得して、xiに割り当てました。

(5)次に、ループの次のラウンドを開始します。これは、xの現在のリストを反復するforループです。反復ごとに、1つの要素xjが取得され、xiと比較されます。より小さいxjが検出された場合は、それを使用します。の値はxi(xiに割り当てられている)に置き換えられ、forループの反復が終了するまで、現在のxのリストで最小のxiが見つかりました。

(6)次に、2つのこと:最初にxiを代替リストyに追加し、次に、既存のxリストから現在のxi値を削除します。この時点で、whileループが終了し、xのリストの長さが1つ短くなります。

(7)もちろん、プログラムは終了しません。whileループは、xの長さが0になるまで続き、ループを終了します。リストオブジェクトxは空である必要があるように見えますが、新しいyリストはふっくらしていますか?そして、yのすべての要素はxから来ていますが、それは小さいものから大きいものまで整然と、きちんと配置されています!どうですか?信じられますか?とにかく、私はそれを信じました。

(8)それでも信じられない場合は、OK、あなたが書いたのは関数です。それを呼び出して試すことができます。数字または文字列の文字列を入力できます。そうです、最終的なコードはこれを意味します!

(9)最後に、なぜy = []全体を保持する必要があるのか疑問に思いましたが、その目的が理解できたので、ルーチンは深いです〜

要約する:

移行方法の基本的なアルゴリズムの原則は、順序付けられていないリストをトラバースし、最初に最初の値を取得し、それよりも小さい値に遭遇したときにそれを他のすべての値と比較し、それを取り出して続行することです。比較。ラウンド後、「一番上にフロートする」値はこのラウンドで最小になり、リストから削除されて新しいリストに追加されます。類推により、元のシーケンスがクリアされるまで残りのシーケンスで小さい値を探し続けます。その後、取得される新しいリストはソートされたリストです。

2、 交換方法のソースコード

交換方式のアルゴリズム原理は、基本的に移行方式と同じです。ただし、「表面化」した小さな要素を格納するために新しいリストを定義する必要はありません。代わりに、インデックスの位置を入れ替えて、小さな値が前面の位置に配置され、最終的に並べ替えられます。

移行方法の基盤により、時間を節約できます。交換方法のコードを詳細に分析することはしません。誰か(私のように長蛇の列になっている)が卵を投げたがらないようにするためです。誰もが自分でそれを理解しようとすることに興味があります。本当に理解できない場合は、私にメッセージを残すことができます。

さらに、Pythonには、リストオブジェクトを直接並べ替えることができる独自の並べ替え関数list.sort()が組み込まれているとしましょう。 (今回は卵を投げるということではありません。誰かが拳を握り締めました。私は本当にあなたを投げたくありません。あなたが一連の並べ替えアルゴリズムを手作業で書いたと思いませんか。あなたの自信はすぐに爆発し、素晴らしい気分になりますか? ?)

次に、ケース6について話しましょう。ああ、いや、その握りこぶしを見たので、忘れて、今日ここでやめましょう。話したくないわけではありません。ケース6は少し...もう少し複雑です。バブルソーティングの交換アルゴリズムを理解するためのすべての人の忍耐力に影響を与えないために、明日も続けましょう。ケース6は良いことです。明日はずっと過ごすことができます。消化しに来てね

概要

今日は、エンタープライズアプリケーション用とプログラミングアルゴリズム用の2つの小さなケースを共有しました。どちらも、非常に意味のあるコード設計とトレーニングです。授業が終わったら、必ず繰り返しトレーニングしてください。コードは見ているだけでなく、常に良くなります。

ご不明な点がございましたら、メッセージを残すことを忘れないでください。

Recommended Posts

Python(18)入門
Python(9)入門
Python(8)入門
Python(4)入門
Python入門(2)
python-1入門
Python(14)入門
Python(7)の使用を開始する
Python(17)入門
Python(15)入門
Python(10)入門
Python(11)入門
Python(6)入門
Python(3)入門
Python(12)入門
Python(5)入門
Python入門(18歳以上)
Python(13)入門
Python(16)入門
PythonでNumpyを使い始める
Ubuntuを使い始める
python-2入門:関数と辞書
04.Python入門の条件付きステートメント
はじめにpython学習手順
Pythonをすばやく開始する方法
ヘッダー付きのpythonrequests.get
PythonでWeChatを再生する
PythonによるWebスクレイピング
pythonによる学生管理システムの実装
Centos6.7には、へのpythonアップグレードが付属しています
株で遊んでPythonを学んだ
グレーレベルの同時発生マトリックス(Pythonコードを使用)
CythonでPythonコードを高速化
Pythonで地球を作る方法
Python | Hypothesisを使用してPythonコードをすばやくテストする
pythonでexcelテーブルを処理する方法