なぜあなたはいつもPythonを学ぶことができないのか、Pythonを始めるための4つの罠


Pythonは、その単純な構文と少数のキーワードで知られているため、開始が非常に簡単なプログラミング言語として、主要なメディアにだまされることがよくあります。彼の具体的な説明は自明ですが、始めるのが簡単かどうかは議論の余地があります。みんなの土台が違うから。

市場に出回っているPython入門書のほとんどは、非常に長いディレクトリを持っています(結局、重要な知識ポイントがなく、承認されます)が、出発点として、本当にすべての知識ポイントを学ぶ必要がありますか?

初心者の方は、これらの本のカタログを見て学習することで、さまざまな落とし穴に遭遇することがよくあります。今日は、私の個人的な見解を共有します。

文法が多すぎる

Pythonには多くの文法規則がありますか?実際には多くあります。更新されなくなったいくつかの古代のプログラミング言語を研究した場合、実際にはPythonの文法がたくさんあることがわかります。

Pythonは最新の開発の要件に適応する必要があるため、「デコレータ」や「セイウチ演算子」などの新しい文法機能を絶えず追加することが「強制」されています。

このとき、初心者は最初の罠に陥ります。「ディレクトリ」の誘惑に耐えられず、特定の知識ポイントをスキップすると開始できないと感じます。

初心者として、私はこれらのことを学ぶことをお勧めしません(おそらく短期的にはそれらを使用することができないでしょう)。

それで、あなたはどんな文法を学ぶ必要がありますか?

  1. 支部判決
  2. サイクル

率直に言って、それはifループとforループです。

実際、これらの文法を学ぶために、書き方を覚える必要はありません。現在のIDEは非常に使いやすく、一般にコードを生成する機能を提供するため、ほとんどの場合、これらの文法ステートメントでは、各文字を手動で入力する必要はありません。セグメント。以下は、vscodeのデモンストレーションです。

誰かがコードの各部分を手で入力することを提案しているのをよく見かけます。よく考えなければなりません。これはキーボードのタイピングスキルを向上させるだけです。

しばらくの間、複数のプログラミング言語を前後に切り替える必要があることがよくありますが、文法的なメモリレベルはテストされません。これがコードスニペットの利点です。

小さな友達:「演算子の優先順位など、他の文法規則についてはどうでしょうか。どうしたらよいか思い出せません。」

実際、演算子の優先順位を覚えていませんでした。複数の演算子がある場合は、常に括弧を使用して優先順位を明確にしているためです。

小さな友達:「始めるのは簡単なようです。ifとforの構文は本当に簡単に習得できますか?」

いいえ、文法がどのように書くかではなく、ブール値を構築する方法であるかどうかを学ぶことの焦点は、基本的なデータ型(str、int、boolなど)をさらに理解する必要があります。

幸い、これらのナレッジポイントの数は非常に少なく、開始するために各タイプのストレージメカニズム(必要なバイト数など)を理解する必要はありません。

上記の知識ポイントは、入門書の1〜3章の内容にすぎない場合があります

シーケンス処理は非常に重要です

ifとforの使用法の基本を理解したら、次のステップはシーケンスのデータ構造(リスト、タプル)を理解することです。

この時点で、初心者は別の落とし穴に陥ります-リストを覚える方法はたくさんあります!

同様に、初心者がこれらの方法を覚えることはお勧めしません。最も一般的に使用される1つまたは2つの操作を覚えておいてください。といった:

  1. 要素を追加:追加
  2. 要素を削除:削除

同様に、文字列を処理する方法はたくさんありますが、通常はいくつかの方法を学ぶだけで済みます。

小さな友達:「?!それだけ?」

実際、後で上記の2つの操作を使用することはめったにありません。Pythonでは、その場でシーケンスを操作するよりも、新しいシーケンスを作成する傾向があるためです。

後で推論を学ぶとき、最もよく使われる文法はifとforであることがわかります

なぜシーケンス処理が重要なのか疑問に思われるかもしれません。

アプリケーション開発であろうと通常のオフィスオートメーション学習であろうと、どのプログラミング言語を学習しても、真に複雑なロジックのほとんどはシーケンス処理に由来します。

たとえば、ファイルの山、​​各ファイルにはデータの山があります。

そして、単純な単一データ、多くの場合、操作は非常に単純で単純です。

この段階で辞書を学ぶべきですか?理解してみることをお勧めします。理解できないことがわかった場合は、スキップしてください。後の期間には常に彼のアプリケーションシナリオが存在するため、シナリオを組み合わせて学習する方が簡単です。

思考の問題を分解することを学ぶ

上記の2段階の学習の後、せいぜい小学校の足し算、引き算、掛け算、割り算の単純な問題しか解決できず、もう少し複雑な問題の手がかりがないことがわかります。

この時点で、別のトラップに陥ります-ロジックについて考えながらコードを記述します

これはPythonの機能ではないため、ほとんどの入門書ではこれを説明していませんが、非常に重要です。

プログラミングの本質は、現実の論理をコードで表現することです。

実際には、もっと複雑なことをやりたいときは、まず全体のプロセスを考え、複数のサブプロセスに分割し、最後に各サブプロセスの詳細を考えます。

私の記事ではケースが不可欠です。

次の現実的なシナリオを考えてみましょう。自宅の本棚から特定の著者の本を見つけたいとします(100冊以上の本があります)。

これはとても簡単だと思うかもしれません。最初から始めて、すべての本で著者の名前を見て、一致する場合はそれを取り出してみませんか?

この思考プロセスは、実際には全体から詳細までのプロセスです。

  1. まず、どこから始めればよいかを考えます。常に検索方向があります。たとえば、本棚の左上隅から本の各行をスイープします
  2. 次に、探し始める前に、本を見つけて表紙の著者の名前を見ることにします。
  3. 最後に、条件を満たしている場合は、元の本と区別するためにそれを取り出す必要があります

上記の各考慮事項は、運用を開始する前に決定されていることに注意してください。これは、全体から詳細までの考慮事項です。

本を手に取って、著者の名前を見つける方法を考えるだけではありません。見つけたら、それを取り出しますか?これは非常に直感的ではありません。

しかし、Pythonの初心者は、この種の直感に反するプログラミングを使用することがよくあります-どこに書いても、どこにいても

次に、Pythonの質問に切り替えます。

フォルダには多くのテキストファイルがあり、各ファイルは本に相当し、本のタイトルや著者の名前などの情報が含まれています。

以下は、直感に反する書き方です。この記事の最後に、カスタム関数の方法を示します。2つの書き込み方法の考え方の違いをはっきりと感じることができます。

ステップ1:すべてのファイルを省略したり繰り返し削除したりせずに確実に取り出すにはどうすればよいですか?

インターネットで「pythonfolderfile」を検索した後、見つける方法はたくさんありますが、そのうちの1つを自由に使用します。

import os 
 
for file in os.listdir(r'目标文件夹路径'): 
    # file 就是每个文件的路径 
    pass 
     

ステップ2:ファイルパスがあります、内部のコンテンツを読み取る方法は?

インターネットで「pythonreadfile」を検索し、次を見つけます。

with open('文件路径(记得带后缀)', 'r') as f: 
    lines = f.readlines() 
    # lines 是一个列表,每个元素就是文件中的一行内容 

このステップは、実際には最初のステップのフォローアップ操作であるため、次のようになります。

import os 
 
for file in os.listdir(r'目标文件夹路径'): 
    # file 就是每个文件的路径 
    with open(file, 'r') as f: 
        lines = f.readlines() 

3番目のステップ:行のファイルの内容は「author:」プレフィックスです。この行を提供するために、提案された作成者の名前の内部はどのようになっていますか?

これは通常の文字列操作です。

'作者:小明'.split(':')[1] 

これは、始めるための必見の方法です。もちろん、オンラインで「python文字列セグメンテーション」を検索することもできます。

したがって、コードは次のようになります(本のタイトルを簡単に削除できます)。

import os 
for file in os.listdir(r'目标文件夹路径'): 
    with open(file, 'r') as f: 
        lines = f.readlines() 
         
        # 第三步 
        book = lines[0].split(':')[1] 
        author = lines[1].split(':')[1] 

ステップ4:本のタイトルが私たちが探しているものであるかどうかを判断し、一致する場合はそれを取り出します

これは、if判定と基本的なシーケンス操作を使用します。

import os 
 
# 第四步 
results = [] 
target = '小明' 
 
for file in os.listdir(r'目标文件夹路径'): 
    with open(file, 'r') as f: 
        lines = f.readlines() 
        book = lines[0].split(':')[1] 
        author = lines[1].split(':')[1] 
         
        # 第四步 
        if target==author : 
            results.append(book) 

今、結果リストは結果です

コードは単純に見えますが、本がテキストファイルではなく、Excelである場合、どこで一度に変更するかを知ることができますか?

初心者は、そのような詳細にしばしば不満を感じます。他の人が書いていることはもちろん理解できますが、自分の問題を解決すると混乱します

これは、Pythonには「全体から詳細」のプロセスに完全に一致する知識ポイントがあるためです。しかし、初心者は一般的にあまり使用しません。

必ずカスタム関数を学ぶ

プログラミング言語が基本的にカスタム関数の特性を持っているのはなぜですか?これは問題を解決するための思考ロジックと一致しているためです。

それでも前の問題を解決します:

# 第一步:从书架上取出书 
def get_file_paths(folder): 
    pass 
 
# 第二步:看封面,得知书名与作者 
def get_book_message(file): 
    pass 
    return book,author 
 
# 第三步:看看是否符合 
def match(author): 
    return author=='小明' 

「資格のある本を取り出す」という最後のステップが欠けているとどう思いますか?

全体的な呼び出しを見てください:

results=[] 
 
for file in get_file_paths(r'目标文件夹路径'): 
    book,author = get_book_message(file) 
    if match(author): 
        results.append(book) 
  • 「適格な本を取り出す」という論理は、全体的なプロセスに含まれています

次のステップは、各カスタム関数を1つずつ実装することです。解決策は、前の直感に反するものと同じです。

しかし、コードの量が以前よりも増えたとどう思いますか?

これは事実ですが、情報がExcelに保存されている場合は、変更する関数をすぐに知ることができ、変更の負担がはるかに少なくなります。

どうして?

関数定義には制約があるため、上記のget_book_messageの関数定義を確認してください。ファイルパスを渡し、タプル(本のタイトル、作成者)を返す必要があります。

各ステップの全体的なプロセスおよびその他の機能は、ファイルパスからこのタプルを取得する方法に関係なく、プロセスは重要ではなく、結果が最も重要です。

進む方法

上記の要約(開始するため):

  • 文法学習は簡単です(if、for)
  • 基本的な順序(リスト、タプル)を理解する必要がありますが、オブジェクトの操作方法を特別に覚えておく必要はありません。
  • 思考の問題を分解することを学ぶ
  • 機能のカスタマイズを学ぶ

実際、ポイント3は最も重要なポイントであり、他のポイントは彼のためだけのものです

したがって、Pythonの進歩はまだポイント3あたりです。

たとえば、前の例では、プロセスコード全体に「適格な本を取り出す」というロジックが含まれていますが、これは実際には合理的ではありません。次に、この時点で新しい文法知識ポイントを学習し、プロセスコード全体を簡素化できるようにします。

これには、次のことを学ぶ必要がある場合があります。

  • ラムダ
  • 高階関数の定義(固有名詞は怖いです。実際、関数パラメーターに論理を渡すことができます)

もう一つの例:

ステップ2:表紙を見て、本のタイトルと著者を学びます

def get_book_message(file): 
    pass 
    return book,author 

この関数は、本のタイトルと著者のみを返します。他の情報がある場合、プロセス全体のコードも非常に面倒です。

この時点で、クラスの定義など、オブジェクト指向の知識を学ぶ必要があります(実用的な名前付きタプルもOKです)

使用シナリオがある場合に学ぶのが最も簡単なので、実際のニーズに基づいてすべてを学ぶのが最善だと思います。


最後に、ソフトウェアテストデータ共有の波!

テクノロジー業界では、技術スキルを向上させ、自動化プロジェクトでの実務経験を充実させる必要があります。これは、今後数年間のキャリア計画とテストテクノロジーの習熟度に非常に役立ちます。

ゴールデン9日とシルバー10日の面接シーズン、転職、面接の質問の整理のシーズンは、長年私の習慣になっています!以下は、近年の私のコレクションと並べ替えです。全体は[ソフトウェアテスト]を中心に構成されています。メインコンテンツには、Python自動化テストの独占ビデオ、Python自動化の詳細、インタビューの質問のフルセット、その他の知識コンテンツが含まれます。

あなたと私が会い、あなたが何かを見つけることができますように!ソフトウェアテスト、インターフェイステスト、自動テスト、およびインタビューの経験を交換したい場合。WeChatパブリックアカウントをフォローする:[悲しいスパイシーストリップ]216ページのソフトウェアテストエンジニアのインタビューブックを無料で受け取ります。そして、対応するビデオ学習チュートリアルは無料で共有できます!コミュニケーション学習スカート:313782132

良い記事をお勧めします:

1年の実務経験を持つテストエンジニアとしてパッケージ化されており、面接前のアドバイスは以下のとおりです。

自動テストで正確に何を学ぶ必要がありますか?

Tencentを転職に考えてみませんか?私とガチョウ工場の間の過去について少し話してください

より高度な自動テストと手動テストのどちらですか?

初心者は必見です:資格のあるテストケースを書く方法は?

Pythonログインインターフェイステストの問題の記録と解決策(乾物)

おすすめ

転載: blog.csdn.net/weixin_50829653/article/details/113987759