Python3 を愚かな方法で学習するのはどうですか? Python3 を愚かな方法で学習してはどうでしょうか?

皆さん、こんにちは。編集者が次の質問に答えます。書籍「Learning Python 3 the Hard Way」はいかがですか? 電子書籍「Learning Python 3 the Hard Way」をダウンロードしてください。今日は見てみましょう!

ハッカーの Yu Xian 氏が、Know Chuangyu R&D Skills List v3.1 で Python 入門に最適な書籍「Learn Python the Hard Way (英語版リンク)」について言及しました。すべてのコードは、高校生向けの Python 入門チュートリアルである Python Programming Basics and Applications Higher Education Societyの 2.7 バージョンからのものです。

英語版を見るのに飽きたら、Dangdang には中国語版と電子版が用意されています。

その中のコードをPython 3に更新しようとしています。同時に、私自身の初心者の経験もいくつか添付しますので、お役に立てれば幸いです。

中国語版の誰かがこの本のタイトルを「Python のハードな方法で学ぶ」と訳していましたが、実際には「Python を学ぼう、異常な道を歩まないでください」と呼んだほうが興味深いと思います。

著者の意図については、序文で詳しく知ることができます。必ず何度も読んでください。必ず何度も読んでください。必ず何度も読んでください。

【プログラミング的思考モデル】

プログラムは入力に基づいており、特定の処理の後に適切な出力を生成します。

この処理プロセスでは、実際には入力に基づいて決定が行われます。考えてみてください、人工知能。それは、さまざまな入力とさまざまなアルゴリズムを使用して、最適な判断を下し、それを出力することです。

ex0: プログラム環境は自分で用意してください。Windowsの場合は、公式Webサイトにアクセスしてインストールしてください。

例1: Print を学習します。python3 では print ステートメントを括弧で囲む必要があることに注意してください。引用は英語で行う必要があります。「」と「」の違いに注意してください

print("ハローワールド")

print("またこんにちは")

参考文献:

https://docs.python.org/3/whatsnew/3.0.html

https://wiki.python.org/moin/Python2orPython3

http://www.cnblogs.com/codingmylife/archive/2010/06/06/1752807.html

例2: コメントすることを学ぶ

プログラムにコメントを追加するには、# 記号を使用します。コメント文以降は実行されません。print ステートメントに注目し、Python3 の記述方法を忘れないでください。

ex3: 数字と簡単な数式

足し算、引き算、掛け算、割り算は一般的な手続きと同じです。+ - */

必ず英語の入力方法を使用してください。

%here は残りを指します。5 % 2 余りは 1

9 % 3 の余りは 0

もう一つ注意すべきことは、表現の論理的判断です。print(3+2 < 5-7)

戻り値 False を見てください。最初の文字を大文字にする

ex4: 変数と名前

変数名は印刷の途中で追加されることに注意してください。python3 での print ステートメントの記述方法に引き続き注目してください。リマインダーが必要なくなるまで。

車 = 100

print (「あります」、車、「車は利用可能です」)

このセクションの著者は、整数値と浮動小数点値の違いについても言及しました。

プログラミングを書く良い習慣。x=100 と x = 100 を比較します (スペースに注意してください)

詳細については、Baidu で pep8 を検索してください。

ex5: 変数と出力に関するさらなる知識

my_name = "アルバート・ハオ"

my_age = 38 # 嘘じゃない

print ("Let's talk about %s." % my_name) #括弧の位置に注意してください。% ここでの記述は、二重引用符内の内容を置き換えることを指します。この文と次の文の %s と %d に注意してください。

print ("彼は %d 歳です。" % my_age)

このセクションの著者は、IDE で学習できるround関数も紹介しています。

print (round(1.7333,2))

結果を見てみましょう。

考えてみてください: %r は何を意味しますか? %d と %s の違い。

ex6: 文字列とテキスト

バイナリ = 「バイナリ」

do_not = 「しないでください」

y = "%s を知っている人、%s を知っている人。" % (binary, do_not) #複数の変数を使用する場合は括弧 (括弧) を追加します

印刷 (y)

hilarious = False #最初の文字が大文字であることに注意してください

ジョーク評価 = "そのジョークはとても面白くないですか?! %r"

print (joke_evaluation % 面白い)

w = 「これは……の左側です。」

e = 「右側のある文字列」。

印刷 (w+e)

# false は false と等しくない

# % y は、その前の文字列の後に続く必要があります。

ex7: 印刷についての詳細

print ("Mary had a little lamb.") #IDE に print と入力すると、print ではキャリッジのパラメータが戻されないことがわかります。

print ("." * 10) # 文字列も乗算できます。小数点を_に変更して試してください。下線を一行出力することができます。

終了1 = "H"

終了2 = "私"

end3 = "!"

print (end1 + end2 + end3)

print (end1,end2,end3,end=" ")

print (end1,end2,end3,end=" \n") #sublime3を使用する場合は、0.2秒後の終了位置を観察してください

例8: さらに印刷する

%r とフォーマッタがパラメータとして渡されることを理解してください。

フォーマッタ = "%r %r %r %r"

print (フォーマッタ % (1,2,3,4))

print (フォーマッタ % ("one","two","three","four"))

print (フォーマッタ % (True、False、True、False))

print (フォーマッタ % (フォーマッタ,フォーマッタ,フォーマッタ,フォーマッタ))

print (フォーマッタ % (

「こんなもの持ってたんだ。」

「正しく入力できたと思います。」,

「でも鳴かなかった。」、

「だからおやすみって言ったのよ。」))

ex9: 印刷、印刷、印刷

このセクションでは主に、キャリッジ リターンとライン フィード文字である \n の使用法について説明します。

3 つの引用符は、段落内で改行が許可されることを意味します。「」

days = 「月、火、水、木、金、土、日」

months = "1月\n2月\n3月\n4月\n5月\n6月\n7月\n8月"

print ("今日は次のとおりです:",days)

print ("ここに月があります:",months)

印刷 ("""

ここで何かが起こっています。

3 つの二重引用符を使用すると、

好きなだけ入力できるようになります。

必要に応じて 4 行でも、5 行でも、6 行でも。

""")

ex10:それは何ですか

このセクションでは主に \n などの特殊文字について説明します。

エスケープ文字 \ を \ として出力する場合は、プログラム内で \\ として記述する必要があります。

同様の特殊文字は次のとおりです。

\ttab キー

\" 出力引用符

tabby_cat = "\tタブでログインしています。"

persian_cat = "行が\n分割されています。"

backslash_cat = "私は \\ 猫です。"

fat_cat = ''

リストを作成します:

\t* キャットフード

\t* 怪しい

\t* マタタビ\n\t* 草

「」

print ("%s" % tabby_cat)

印刷 (ペルシャ猫)

印刷 (バックスラッシュ_猫)

印刷 (fat_cat)

次のループ コードを試してください。

True の場合:

["/","-","|","\\","|"] の i の場合:

print("%s" % i,end="") #元のテキストは %s\r ですが、\r を置き換えて end="" を追加しました

while と for が配置されている行の最後にはコロンが必要であることに注意してください。

同時に、次の行にはインデントとして 4 つのスペースが必要です。これは英語でのインデントです。

ここでのループは end ステートメントを実行しないので、手動で終了できることに注意してください。Ctrl+Z

初心者はこのバージョンを試すことができます。

カウント = 0 #カウンター

while count <500: #500を超えていない場合は以下のコマンドを実行

for i in ["/","-","|","\\","|"]: #角括弧内はリスト オブジェクトです。この行の意味は、i が次の角括弧の各要素を順番に取得することです。他の記号を使用してみることもできます

カウント = カウント +1

print("%s" %i,end="")

ex11: コンピュータに人々に質問させましょう

この章では、入力が始まります。このステートメントは、コンピューターがコマンド ラインの形式で入力を受け入れるというステートメントです。

このステートメントは Python 2 と 3 の違いでもあります。Python3 には raw_input がありません。

print (「あなたは何歳ですか?」)

年齢 = input()

print (「身長はどれくらいですか?」)

高さ = 入力()

print("体重はどれくらいですか?")

重み = 入力()

print("つまり、あなたは %r 歳で、%r 背が高く、%r 体重が重いです。" % (

年齢、身長、体重))

元の記事では、改行がないように print ステートメントの最後にカンマが使用されています。Python3ではex10のloop文内でのprintの書き方を参照できるほか、IDLE統合環境でテストすることもできます。

print ( と入力すると通知されます。コマンド ラインに help(print) と入力することもできます。

例12: コンピューターを使用して人々に質問する

前のセクションとの違いは、このセクションではユーザーに直接入力を求め、入力結果を変数に格納することです。

age = input("あなたは何歳ですか?")

height = input(「あなたの身長はどれくらいですか?」)

体重 = input(「体重はどれくらいですか?」)

print (「ということは、あなたは %r 歳で、%r 身長が高く、%r 体重が重いということですね。」 % (

年齢、身長、体重))

#改行のスペースは省略できないので注意してください。

コマンド ラインで python -m pydoc input と入力すると、入力コマンドのヘルプ ファイルを表示できます。

ex13: パラメータ、受信パラメータ、変数

このセクションでは、import コマンドを使用して argv モジュールをインポートします。主にコマンドラインでパラメータを入力します。プログラムの効果を確認するには、コマンド ライン (Windows の場合は cmd) で python ex13.py first Second third のようなコマンドを使用する必要があります。

SYS インポート argv から

、1 番目、2 番目、3 番目 = argv

print ("その名前は次のとおりです:", )

print (「最初の変数は次のとおりです:」、最初)

print ("2 番目の変数は次のとおりです:", Second)

print ("3 番目の変数は次のとおりです:", third)

ex14: プロンプトを使用してパラメータを入力し、渡します

このセクションは、前の 2 つのセクションの内容を組み合わせたものです。コマンドラインを使用して、user_name パラメータを忘れずに渡してください。

SYS インポート argv から

、ユーザー名 = argv

プロンプト = '> '

print ("こんにちは %s、私は %s です。" % (user_name, ))

print (「いくつか質問したいことがあります。」)

print ("私のこと %s が好きですか?" % user_name)

いいね = 入力(プロンプト)

print ("%s はどこに住んでいますか?" % user_name)

ライブ = 入力(プロンプト)

print (「どんな種類のコンピュータをお持ちですか?」)

コンピュータ = 入力(プロンプト)

印刷 ("""

さて、あなたは %r が私を好きだと言いましたね。

あなたは %r に住んでいます。それがどこにあるのかわかりません。

そして、%r コンピュータをお持ちです。ニース。

""" % (いいね、ライフ、コンピュータ))

3 つの引用符の役割を覚えていますか? 3 つの引用符を使用すると、段落内で改行できます。

ex15: ファイルを読み込む

このセクションでは、テキスト ファイルの読み取りを練習します。ex15_sample.txtを事前に用意しておく必要があります

著者が使用したコンテンツは次のとおりです。

これは私がファイルに入力したものです。

本当に素晴らしいものです。

ここには楽しいことがたくさんあります。

ex15.pyの内容

SYS インポート argv から

、ファイル名 = argv

txt = 開く(ファイル名)

print ("これがあなたのファイル %r:" % ファイル名)

印刷 (txt.read())

txt.close()

print ("ファイル名をもう一度入力してください:")

file_again = input("> ")

txt_again = open(file_again)

print (txt_again.read())

このセクションでは、次の能力を練習することもできます。

各行の上にこの行の機能を英語で説明します。他の人に質問することも、python open を使用して open コマンドに関連するコンテンツを取得するなど、オンラインで検索することもできます。

ex16: ファイルの読み取りと書き込み

このレッスンでは主にファイルの読み取りと書き込みの操作について学びます。コード行が理解できない場合は、自分でコメントを追加できます。

このレッスンでも、コマンド ラインを介してプログラムにパラメーターを渡す必要があることに注意してください。このレッスンの演習として、target.write のコードを 1 行に圧縮してみてください。

SYS インポート argv から

、ファイル名 = argv

print ("%r を消去します。" % ファイル名)

print ("それを望まない場合は、CTRL-C (^C) を押してください。")

print (「それでもいい場合は、Return キーを押してください。」)

入力("?")

print ("ファイルを開いています...")

ターゲット = オープン(ファイル名, 'w')

print (「ファイルを切り詰めています。さようなら!」)

target.truncate()

print (「これから 3 行お願いします。」)

line1 = input("行 1: ")

line2 = input("行 2: ")

line3 = input("行 3: ")

print (「これらをファイルに書き込みます。」)

ターゲット.ライト(行1)

target.write("\n")

target.write(line2)

target.write("\n")

target.write(行3)

target.write("\n")

print (「そして最後に、閉じます。」)

target.close()

ex17: さらなるファイル操作

このセクションでは、新しいモジュールを紹介します。この本では Cat test.txt を使用していますが、Windows では cmd コマンド ボックスに「test.txt」と入力できます。

python -m pydoc import を使用すると、import の使用法について詳しく学ぶことができます。

チップ:

1. コードが非常に長い場合は、コードをセクションに分けてデバッグできます。

2. print 変数を使用して中間結果をセグメントに出力し、コードをデバッグする効果を得ることができます。

3. 考えてみてください。なぜドキュメントを閉じるのに close メソッドを使用する必要があるのでしょうか? 10 万人がいて全員が文書を閉じなかった場合、どのような結果が生じるでしょうか? プログラミングをするときは、最初から良い習慣を身につけてください。

4. len() 関数の使い方は?

SYS インポート argv から

os.path からのインポートが存在します

、from_file、to_file = argv

print ("%s から %s にコピーしています" % (from_file, to_file))

# これら 2 つを 1 行で実行することもできますが、どうすればよいでしょうか?

in_file = open(from_file)

indata = in_file.read()

print ("入力ファイルの長さは %d バイトです" % len(indata))

print ("出力ファイルは存在しますか? %r" % 存在します(to_file))

print ("準備完了。続行するには RETURN キーを押し、中止するには CTRL-C キーを押してください。")

入力()

out_file = open(to_file, 'w')

out_file.write(indata)

print (「はい、すべて完了しました。」)

out_file.close()

in_file.close()

ex18: 名前、変数、コード、関数

# これは argv を使用したあなたのものに似ています

def print_two(*args):

arg1, arg2 = args #4 つのスペースに注意してください。コピー時にスペースが失われる場合があります。

print ("引数1: %r, 引数2: %r" % (引数1, 引数2))

# OK、その *args は実際には無意味なので、これを行うだけで済みます

def print_two_again(arg1, arg2):

print ("引数1: %r, 引数2: %r" % (引数1, 引数2))

# これは引数を 1 つだけ取ります

def print_one(arg1):

print ("引数1: %r" % 引数1)

# これは引数を取りません

def print_none():

print (「何も得られませんでした。」)

print_two("ゼッド","ショー")

print_two_again("ゼッド","ショー")

print_one("まずは!")

print_none()

関数は 3 つのことを行います。 関数は、コードに名前を付ける、パラメーターを受け取る、独自のコードを構築するという 3 つのことを行います。

1. 変数が文字列や数値に名前を付けるのと同じように、コード部分に名前を付けます。

2. これらは、 が argv を受け取るのと同じように引数を受け取ります。

3. #1 と #2 を使用すると、独自の「ミニ コマンド」または「小さなコマンド」を作成できます。

後の演習のために機能チェックリストを書き留めます。

これらをインデックス カードに書き、残りの演習を完了するまで、または必要がないと感じるまで手元に保管してください。

1. 関数定義を def で始めましたか?

2. 関数名には文字と _ (アンダースコア) 文字だけが含まれていますか?

3. 関数名の直後に開き括弧 () を付けましたか?

4. 引数を括弧 ( カンマで区切って) の後に置きましたか?

5. 各引数を一意にしましたか (名前が重複しないことを意味します)。

6. 引数の後に右括弧とコロン ): を付けましたか?

7. 関数 4 のスペースに必要なコード行をすべてインデントしましたか? それ以上でもそれ以下でもありません。

8. インデントなし (デデントと呼びます) のない記述に戻って関数を「終了」しましたか?

関数を実行 (「使用」または「呼び出し」) するときは、次のことを確認してください。

1. 名前を入力してこの関数を呼び出し/使用/実行しましたか?

2. 名前の後に ( 文字を入力して実行しましたか?)

3. 必要な値をカンマで区切って括弧内に入力しましたか?

4. 関数呼び出しを ) 文字で終了しましたか?

これら 2 つのチェックリストは、不要になるまで残りのレッスンで使用してください。

ex19 関数と変数

このセクションでは主に、数値を直接使用する、変数を使用する、数式を使用する、または変数と数式を使用するなど、関数にパラメータを渡すさまざまな方法をテストします。

def チーズとクラッカー(チーズ数、クラッカーの箱):

print ("チーズが %d 個あります!" % Cheese_count)

print ("クラッカーが %d 箱あります!" % box_of_crackers)

print (「パーティーにはこれで十分だ!」)

print ("毛布を買ってください。\n")

print ("関数番号を直接与えることができます:")

チーズとクラッカー(20, 30)

print (「または、次の変数を使用できます:」)

チーズの量 = 10

クラッカーの量 = 50

チーズとクラッカー(チーズの量, クラッカーの量)

print ("内部で計算もできます:")

チーズとクラッカー(10 + 20、5 + 6)

print ("変数と数学の 2 つを組み合わせることができます:")

チーズとクラッカー(チーズの量 + 100, クラッカーの量 + 1000)

独自の関数を作成して 10 の異なる方法で実行してみてください。

コメントを追加してプログラムを 1 行ずつたどることも、コードを声に出して読んで学習することもできます。絵を描いて学ぶこともできます。

関数が持つことができるパラメータの数に制限はありますか?

関数は関数を呼び出すことができますか?

ex20: 関数とファイル

ファイルの読み込みを中心に、関数によるファイルの操作方法を紹介します。ex20.txt などのテキスト ファイルを用意し、3 行のテキストを記述する必要があります。実行方法は先ほどと同じで、コマンドラインに「python ex20.py ex20.txt」と入力する必要があります。

以下のコードでは、コピー後にスペースがない場合は、手動でスペースを追加する必要があります。(たとえば、以下の 4 行目にはスペースが 4 つあります)

SYS インポート argv から

、入力ファイル = argv

def print_all(f):

print (f.read())

デフォルト巻き戻し(f):

f.シーク(0)

def print_a_line(line_count, f):

print (line_count, f.readline())

現在のファイル = オープン(入力ファイル)

print ("まずファイル全体を印刷しましょう:\n")

print_all(現在のファイル)

print (「テープのように巻き戻してみましょう。」)

rewind(current_file) #ファイルポインタをファイルヘッダに戻します

print ("3 行を印刷しましょう:")

現在の行 = 1

print_a_line(現在の行, 現在のファイル)

現在のライン = 現在のライン + 1

print_a_line(現在の行, 現在のファイル)

現在のライン = 現在のライン + 1

print_a_line(現在の行, 現在のファイル)

その他の知識: x = x + y は x += y と同じです。

ex21: 値を返すことができる関数

このセクションでは、値を返すことができる関数について学びます。主にリターンツーリターンを使用します。

def add(a, b):

print ("%d + %d の追加" % (a, b))

a + bを返す

def 減算(a, b):

print ("減算中 %d - %d" % (a, b))

a - b を返す

def multiply(a, b):

print ("乗算 %d * %d" % (a, b))

a * b を返す

def 除算(a, b):

print ("DIVIDING %d / %d" % (a, b))

a / b を返す

print (「関数だけで計算してみよう!」)

年齢 = add(30, 5)

高さ = 減算(78, 4)

重み = 乗算(90, 2)

iq = 除算(100, 2)

print ("年齢: %d、身長: %d、体重: %d、IQ: %d" % (年齢、身長、体重、iq))

# 追加クレジットのためのパズル、とにかく入力してください。

print (「これがパズルです。」)

#次の行を見てください。これを算術で書くとどうなるでしょうか?

what = 加算(年齢、減算(身長、乗算(体重、除算(iq, 2))))

#これを計算したい場合はどうすればよいでしょうか? 24+34/100-1023

print (「それは次のようになります。」、何、「手動でできますか?」)

ex22: これまでに何を学びましたか?

今日のレッスンにはコーディングの演習はありません。以前に学習したすべての内容 (文字列またはトークン) を復習する必要があります。まだ理解できない文字列や記号がある場合は、紙を見つけて書き留めてください。

本やインターネットで学び、理解してから暗記します。

思い出していただきたい非常に重要なことが 1 つあります。

この演習を行う際に最も重要なことは、「失敗はない、挑戦するだけである」ということです。

このエクササイズは、一度に 15 分以内で行うことをお勧めします。しばらく休んで続けてください。

ex23: コードを読んでください

前のトレーニングがコードを書いてコードをデバッグする能力だった場合、このセクションはコードを読む能力をトレーニングします。

能力としては主に以下の3つがあげられます。

1. 必要なものの Python ソース コードを見つけます。

2. コードを読んでファイルを探す すべてのコードを読んで、ファイル内で適切なコードを見つけます。

3. 見つけたコードを理解しようとする 見つけたコードを理解しようとします。

しなければならないことは次のとおりです。

やることは次のとおりです。

1. お気に入りの Web ブラウザで bitbucket.org にアクセスし、「python」を検索します。bitbucket.org にアクセスして「Python」コードを見つけます。

2. 「Python 3」と記載されているプロジェクトは避けてください。混乱するだけです。原文では Python2 を使用しているため、著者は Python3 コードを避けるように述べていますが、Python3 を使用している場合は、Python3 で書かれたコードを探してください。

3. ランダムなプロジェクトを選択してクリックします。

4. [ソース] タブをクリックし、.py ファイルが見つかるまでファイルとディレクトリのリストを参照します (ただし、.py ファイルは見つかりません)。

setup.py、それは役に立たない) ソース コード ページを選択し、.py ファイルを見つけます。これは setup.py ではないことに注意してください。そのファイルは役に立ちません。

5. 最初から読み始めて、内容をメモしながら読み進めてください。通一遍路

6. 気になる記号や奇妙な単語があれば、後で調べるために書き留めてください。

コードを参照できるその他のサイト:

github.com

ランチパッドネット

koders.com

ex24: さらなる演習

このセクションでは主に持久力と忍耐力を鍛えることについて説明します。以前に学習したすべてを使用して、このプログラムをデバッグすることもできます。

print (「全部練習しましょう。」)

print ("\n 改行と \t タブを実行する \\ を使用したエスケープについて知っておく必要があります。")

詩 = ""

\t素敵な世界

論理がしっかりと植え付けられている

\n 愛の必要性を識別できない

直感から情熱を理解することもできない

そして説明が必要です

\n\t\t何もないところに。

「」

print("--------------")

版画(詩)

print("--------------")

5 = 10 - 2 + 3 - 6

print("これは 5 つである必要があります: %s" % four)

def Secret_formula(開始):

ゼリービーンズ = 開始 * 500

瓶 = ゼリービーンズ / 1000

木箱 = 瓶 / 100

ゼリービーンズ、瓶、木箱を返す

開始点 = 10000

豆、瓶、木箱 = Secret_formula(start_point)

print("開始点: %d" % start_point)

print("%d 個のビーン、%d 個の瓶、%d 個のクレートがあります。" % (ビーン、ジャー、クレート))

開始点 = 開始点 / 10

print ("この方法でもできます:")

print("%d 個の豆、%d 個の瓶、%d 個の箱があります。" % Secret_formula(start_point))

ex25: もっと練習してください

途中まで書いたところ、cnblogs にコードを直接挿入できることがわかりました。幸いなことに、まだ手遅れではありません。

def Break_words(スタッフ):

"""この機能は単語を分割します。"""

言葉 = スタッフ.split(' ')

言葉を返す

def sort_words(単語):

"""単語を並べ替えます。"""

並べ替えて返す(単語)

def print_first_word(単語):

"""ポップオフした後の最初の単語を出力します。"""

単語 = 単語.ポップ(0)

印刷(ワード)

def print_last_word(単語):

"""最後の単語をポップオフした後に出力します。"""

ワード = ワード.ポップ(-1)

印刷(ワード)

def sort_sentence(文):

"""完全な文を取得し、並べ替えられた単語を返します。"""

単語 = Break_words(文)

sort_words(単語)を返す

def print_first_and_last(文):

"""文の最初と最後の単語を出力します。"""

単語 = Break_words(文)

print_first_word(単語)

print_last_word(単語)

def print_first_and_last_sorted(文):

"""単語を並べ替えて、最初と最後の単語を出力します。"""

単語 = 並べ替え文(文)

print_first_word(単語)

このコードのデバッグはコマンド ラインから実行する必要があります。ex25 をモジュールとしてインポートし、関数を参照します。詳細はWebサイトをご覧ください。

作成者がこのコードの実行プロセスをどのように分析したかを知ることができます。

help(ex25) と help(ex25.break_words) を試して、出力コンテンツの出所を確認してください。ex25の3つの引用符以降の内容でしょうか。

このレッスンでは文字列操作コマンドを詳しく見てみましょう。文字列を自分で定義し、コマンド ライン形式でデバッグできます。ポップはポップ操作のようです。

ex26: おめでとうございます、テストをしてみましょう

優れたプログラマーは、自分のプログラムが間違っている可能性があることを想定し、それを修正するためにあらゆる可能性を試みます。このレッスンでは、優れたプログラマーのように、すべてのエラーを修正し、コードが完全に実行できるようになるまでこのコードをどんどん改善することが求められます。

行き詰まった場合は、停止してしばらく休憩してから続行してください。

朗報です。このレッスンでは、コードをコピーするだけで済みます。一行ずつ入力する必要はありません。これを Python3 で実行可能コードに変換してみることができます。

このレッスンでは、「悪い」プログラマーのコードを修正してみます。悪いプログラマーは理不尽で傲慢で、自分のコードは完璧だと思い込んでおり、他人のことを考慮しません。

よくある間違いには次のようなものがあります。

関数を定義する際のコロンの入力忘れ、poop、returnen、pirnt などの単語のスペルミス、= と == の誤用、アンダースコアとダッシュの混在、および不正なインデント。

def Break_words(スタッフ):

"""この機能は単語を分割します。"""

言葉 = スタッフ.split(' ')

言葉を返す

def sort_words(単語):

"""単語を並べ替えます。"""

並べ替えて返す(単語)

def print_first_word(単語):

"""ポップオフした後の最初の単語を出力します。"""

単語 = 単語.ポップ(0)

印刷(ワード)

def print_last_word(単語):

"""最後の単語をポップオフした後に出力します。"""

ワード = ワード.ポップ(-1)

印刷(ワード)

def sort_sentence(文):

"""完全な文を取得し、並べ替えられた単語を返します。"""

単語 = Break_words(文)

sort_words(単語)を返す

def print_first_and_last(文):

"""文の最初と最後の単語を出力します。"""

単語 = Break_words(文)

print_first_word(単語)

print_last_word(単語)

def print_first_and_last_sorted(文):

"""単語を並べ替えて、最初と最後の単語を出力します。"""

単語 = 並べ替え文(文)

print_first_word(単語)

print_last_word(単語)

print (「全部練習しましょう。」)

print ('\n 改行と \t タブを実行する \\ を使用したエスケープについて知っておく必要があります。')

詩 = ""

\t素敵な世界

論理がしっかりと植え付けられている

\n 愛の必要性を識別できない

直感から情熱を理解することもできない

そして摘出が必要です

\n\t\t何もないところに。

「」

印刷 ("--------------")

プリント(詩)

印刷 ("--------------")

5 = 10 - 2 + 3 - 5

print ("これは 5 つである必要があります: %s" % 5)

def Secret_formula(開始):

ゼリービーンズ = 開始 * 500

瓶 = ゼリービーンズ / 1000

木箱 = 瓶 / 100

ゼリービーンズ、瓶、木箱を返す

開始点 = 10000

豆、瓶、木箱 = Secret_formula(start_point)

print ("開始点: %d" % start_point)

print ("ジーンズは %d 個、瓶は %d 個、木箱は %d 個あります。" % (豆、瓶、木箱))

開始点 = 開始点 / 10

print ("この方法でもできます:")

print ("%d 個の豆、%d 個の瓶、%d 個のクラブアップルがあります。" % Secret_formula(start_point))

センテンス = 「すべての神のことは、重みを持つ人々にやって来ます。」

単語 = Break_words(文)

ソートワード = ソートワード(単語)

print_first_word(単語)

print_last_word(単語)

print_first_word(sorted_words)

print_last_word(sorted_words)

sorted_words = sort_sentence(文)

印刷 (sorted_words)

print_first_and_last(文)

print_first_and_last_sorted(文)

ex27: 論理演算子を覚える

このレッスンから、コンピューターの論理演算を学びます。初心者の場合は、丸一週間かけて学習することをお勧めします。学習を続けると自然に熟練度が高まるため、これ以上の時間を費やすことはお勧めできません。

基本を覚えるという作業は、後で大きな成果をもたらします。

1 日を通して一度に少しずつ取り組んで、最も取り組む必要があるものを書き留めてください。

一般的な論理演算子と用語:

そして

または

ない

!= (等しくない)

== (等しい)

>= (以上)

<= (等しくない)

真実

間違い

上記の演算子を組み合わせて自分でテストできます。

たとえば、Not False、True or False、not (False or True)、0 != 0 で結果を伝えようとします。もちろん、コマンドラインで確認することもできます。

カードを作って毎日試すことができます。ここに失敗はなく、ただ努力し続ける必要があることを忘れないでください。練習は完璧を作る。

ex28: 論理式演習

このセクションには 20 の練習問題が用意されています。自分で試すことができます。前のセクションと同様に、Python コマンド ラインでテストできます。

著者は、質問を完了するための 6 つのステップを示しています

等価性テスト (== または !=) を見つけて、その真偽と置き換えます。= そしてそれを真の値に置き換えます。

それぞれおよび/または括弧内を見つけて、最初にそれらを解決します。

それぞれの not を見つけて反転します。各 not を見つけて値を反転します。

残っているものを見つけて解決します。

完了すると、True または False が表示されます。

False と True の最初の文字は大文字にする必要があることに注意してください。

ex29: もしもの判決文

ここからは IF 条件判定文について説明します。コロン、インデント、== と += の意味に注意してください。人、猫、犬の初期値を変更して、プログラムの実行がどのように変化するかを確認できます。

人 = 20

猫 = 30

犬 = 15

人 < 猫の場合:

print (「猫が多すぎる! 世界は破滅する!」)

人>猫の場合:

print (「猫が少ない! 世界は救われる!」)

人 < 犬の場合:

print (「犬が多すぎる! 世界はよだれを垂らしている!」)

人>犬の場合:

print (「世界は乾燥している!」)

犬 += 5

人 >= 犬の場合:

print (「人間は犬と同等かそれ以上です。」)

人 <= 犬の場合:

print (「人間は犬以下だ!」)

人 == 犬の場合:

print (「人は犬だ。」)

ex30:else および If ステートメント

このセクションの著者は、最初に前のセクションのいくつかの質問を検討します。それらを比較して、あなたの考えと同じかどうか確認できますか?

人 = 30

車 = 40

バス = 15

車>人の場合:

print("車に乗るべきです。")

エルフ車

print("車に乗るべきではありません。")

それ以外:

print("決められません。")

バス>車の場合:

print("バスが多すぎます。")

エリフバス

print("バスに乗ってもいいかもしれない。")

それ以外:

print("まだ決められません。")

人 > バスの場合:

print("よし、バスに乗ろう。")

それ以外:

print("分かった。それなら家にいよう。")

ex31: 決断を下す

このセクションでネストする場合は使用できます。IF の if 分岐を引き続き使用してください。適切なインデントに注意してください。同様の方針に沿って独自のミニゲームを作成してみることもできます。

print("あなたは 2 つのドアがある暗い部屋に入ります。1 番のドアを通りますか 2 番のドアを通りますか?")

ドア = 入力("> ")

ドア == "1" の場合:

print(「ここで巨大なクマがチーズケーキを食べています。何をしますか?」)

print("1. ケーキを取ります。")

print("2. クマに向かって叫びます。")

bear = input("> ")

クマ == "1" の場合:

print("クマがあなたの顔を食いちぎります。頑張ってください!")

エリフ・ベア == "2":

print("クマがあなたの足を食いちぎります。頑張ってください!")

それ以外:

print("そうですね、%s をした方が良いでしょう。クマは逃げます。" % bear)

エルフ ドア =="2":

print("あなたはクトゥルフの網膜で無限の深淵を見つめます。")

print("1. ブルーベリー。")

print("2. 黄色いジャケットの洗濯バサミ。")

print("3. 拳銃の叫び声のメロディーを理解する。")

狂気 = input("> ")

狂気 == "1" または 狂気 == "2" の場合:

print("あなたの体はゼリーの精神によって生きています。よくやった!")

それ以外:

print("狂気のせいであなたの目は汚物のプールに落ちてしまいます。頑張ってください!")

それ以外:

print("あなたはよろめき、ナイフに落ちて死にます。よくやった!")

ex32: リストとループ

コンピュータは、判断に加えて、反復的な処理を行うことにも優れています。以下のコードでは、主にループ部分がどのように記述されているかに注目してください。

リストに関する知識を確認し、elements.append() 以外に何があるかを確認してください。IDLE では、リスト名と小数点を入力し、Shift キーを押して確認できます。

the_count = [1、2、3、4、5]

果物 = ['リンゴ'、'オレンジ'、'梨'、'アプリコット']

変更 = [1, 'ペニー', 2, '10 セント', 3, '4 分の 1']

# この最初の種類の for ループはリストを処理します

the_count の数値の場合:

print ("これはカウント %d" % 数値)

# 同上

果物の中の果物の場合:

print ("フルーツの種類: %s" % フルーツ)

# 混合リストも参照できます

# %r の内容がわからないので、%r を使用する必要があることに注意してください。

変化する私のために:

print ("%r を取得しました" %i)

# リストを作成することもできます。最初は空のリストから始めます

要素 = []

# 次に range 関数を使用して 0 ~ 5 カウントを実行します

range(0, 6) の i の場合:

print ("%d をリストに追加します。" % i)

# append はリストを理解する関数です

要素の追加(i)

# 印刷もできるようになりました

要素内の i の場合:

print ("要素は %d" % i)

ex33:while ループ

考えてみてください。なぜ While ループが必要なのでしょうか?

While ループを使用する場合の注意事項:

これらの問題を回避するには、従うべきルールがいくつかあります。 while ループが永久に実行されるのを避けるために、次のルールに従ってください。

1. while ループは控えめに使用するようにしてください。通常は for ループの方が優れています。while ループは控えめに使用してください。通常は for ループの方が優れています。

2. while ステートメントを確認し、テストしているものがいずれかの時点で False になることを確認します。

3. 疑問がある場合は、while ループの上部と下部にあるテスト変数を出力して、コードがどのように実行されるかを確認します。

i = 0

数字 = []

私が 6 未満の場合:

print ("先頭の i は %d" % i)

数値.追加(i)

i = i + 1

print ("今の数字: ", 数字)

print ("一番下の i は %d" % i)

print ("数字: ")

数字の num の場合:

印刷する

学習ドリルの答え: コードを関数に変更する

def make_list(ran,step):

i = 1

数字 = []

ran1=範囲(1, ラン)

ran1 の i の場合:

print("一番上の i は %d" % i)

数値.追加(i)

print("今の数値:",数値)

print("一番下の i は %d" % i)

数値を返す

Numbers=make_list(6,1)# 最初の argv は範囲、2 番目の argv はステップです。

print("数字:")

数字の num の場合:

印刷(数値)

for ループを使用して同じ機能を実現します。

i = 0

数字 = []

range(0,6) の i の場合:

print ("先頭の i は %d" % i)

数値.追加(i)

i = i + 1

print ("今の数字: ", 数字)

print ("一番下の i は %d" % i)

print ("数字: ")

数字の num の場合:

印刷する

ex34: リスト要素の使用方法

「序数」の数字 最初と 2 番目の序数語

「基数」 基数 1 または 2

では、これはリストの操作にどのように役立つのでしょうか? シンプルに、「3 番目の動物が欲しい」と自分に言うたびに、この「序数」の数値から 1 を引いて「基数」の数値に変換します。「3 番目の」動物はインデックス 2 にあり、ペンギンです。これを行う必要があるのは、これまで序数を使って人生を過ごしてきましたが、これからは基数で考える必要があるからです。

1を引くだけで大丈夫です。

覚えて:

ordinal == 順序付け、1 番目;

カーディナル == ランダムなカード、0。

ちょっとした練習:

動物 = ['クマ'、'ニシキヘビ'、'クジャク'、'カンガルー'、'クジラ'、'カモノハシ']

「0の動物は1番目の動物でクマです。」

2の動物は3番目の動物でクジャクです。

ex35: 分岐と関数

このセクションにはゲームが書かれていますので、コードを読んでゲームの地図を描いてください。コードをデバッグしてみて、タイプミスを含む間違いを文書化してください。

理解できないコードがある場合は、前に学んだ内容を使用して、コードの前にコメントを追加します。

システムインポート出口から

def gold_room():

print (「この部屋は金でいっぱいです。いくらもらえますか?」)

next = input("> ")

次が「0」、または次が「1」の場合:

どのくらい = int(次)

それ以外:

Dead("おい、数字の入力を覚えろ。")

どのくらい < 50 の場合:

print (「いいですね、欲張ってないですよ、勝ちです!」)

出口(0)

それ以外:

死んだ(「この強欲野郎!」)

def bear_room():

print (「ここにクマがいます。」)

print (「クマはハチミツをたくさん持っています。」)

print (「太ったクマは別のドアの前にいます。」)

print (「クマをどうやって動かすの?」)

bear_moved = False

True の場合:

next = input("> ")

if next == "蜂蜜を取る":

Dead(「クマはあなたを見て、あなたの顔を平手打ちします。」)

elif next == "taunt bear" ではなく bear_moved:

print("クマがドアから移動しました。もう通過できます。")

bear_moved = True

elif next == "taunt bear" と bear_moved:

Dead(「クマは激怒し、あなたの足を噛みちぎります。」)

elif next == 「ドアを開ける」と bear_moved:

ゴールドルーム()

それ以外:

print (「意味が分かりませんでした。」)

def cthulhu_room():

print (「ここに巨悪のクトゥルフがいます。」)

print (「彼、それ、何であれ、あなたを見つめると、あなたは狂ってしまいます。」)

print (「命からがら逃げるか、それとも首を食べるか?」)

next = input("> ")

次に「逃げる」場合:

始める()

次の elif "head":

死んだ(「美味しかったよ!」)

それ以外:

クトゥルフ_ルーム()

デフ死んだ(なぜ):

print (なぜ、「よくやった!」)

出口(0)

def start():

print (「あなたは暗い部屋にいる。」)

print (「あなたの右と左にドアがあります。」)

print (「どれを取る?」)

next = input("> ")

次 == "左" の場合:

bear_room()

elif next == "右":

クトゥルフ_ルーム()

それ以外:

Dead(「お腹が空くまで部屋中をよろめきます。」)

始める()

ex36: 設計とデバッグ

このセクションでは、IF ループと For ループの設計とデバッグのルールについて説明します。

If ステートメントのルール IF ステートメントのルール

1. すべての if ステートメントには else ステートメントが必要です。すべての If ステートメントには else ステートメントが必要です。

2. 意味がないため、この else を決して実行すべきではない場合は、前回の演習で行ったように、エラー メッセージを出力して終了する else 内で die 関数を使用する必要があります。これにより、多くのエラーが見つかります。

else ステートメントが意味をなさないために実行されない場合は、前の演習のコードのように、die 関数を使用してエラー メッセージを出力する必要があります。

3. if ステートメントを 2 つ以上の深さでネストしないでください。常に 1 つの深さで実行するようにしてください。つまり、if を入れると

if の場合は、その 2 番目の if を別の関数に移動する必要があります。

if を 3 レベル以上ネストしないでください。つまり、if の中に if をネストする場合は、2 番目の if を別の関数に移動するのが最善です。

4. if ステートメントを段落のように扱います。各 if、elif、else グループは一連の文のようなものです。前後に空白行を入れます。

各 if ステートメントは段落として記述し、if、elif、else は 1 つの文として記述します。If ステートメントの各段落の前後に空行を追加します。

5. ブール値テストは単純である必要があります。複雑な場合は、関数の前半で計算を変数に移動し、変数に適切な名前を使用します。

IF ステートメントのテスト条件は単純である必要があります。複雑な場合は、事前に変数として定義し、意味のある変数名を付けます。

上記のルールを前のセクションの例と組み合わせると、理解を深めることができます。

ループのルール ループ ステートメントのルール

1. while ループは永遠にループする場合にのみ使用します。つまり、おそらく決してループしないことを意味します。これは Python にのみ適用されます。他の言語は異なります。while ステートメントは、永久にループしたい場合にのみ使用してください。これは、ほとんど「まったく」使用しないことも意味します。もちろんこれはPythonのみの話で、他の言語では異なる場合があります。

2. 他のすべての種類のループには for ループを使用します (特に、ループする処理の数が固定または制限されている場合)。その他の状況では、for ループ ステートメントを使用します。特に変数の数が固定または制限されている場合はそうです。

デバッグのヒント コードのデバッグのヒント

1.「デバッガ」を使用しないでください。デバッガーは、病人の全身スキャンを行うようなものです。具体的に有益な情報は得られず、役に立たず混乱するだけの情報が大量に見つかります。

デバッガは使用しないでください。デバッガーは、患者の全身検査のようなものです。具体的で役立つアドバイスは得られず、あまり役に立たないものの混乱してしまうようなアドバイスがたくさん見つかるでしょう。

2. プログラムをデバッグする最良の方法は、print を使用してプログラム内の各点で変数の値を出力し、どこが間違っているかを確認することです。

プログラムをデバッグする最良の方法は、適切なステートメントのポイントで print ステートメント (print ステートメント) を使用して変数の値を出力し、エラーかどうかを確認することです。

3. プログラムの作業中に、プログラムの一部が動作することを確認します。実行する前に、大量のコード ファイルを作成しないでください。少しコーディングし、少し実行し、少し修正します。

コードをセクションごとにデバッグして、それらが正しいことを確認します。一度に大量のコードを書かないでください。段落を書いたり、実行したり、段落を修正したりしてみてください。

ex37: プログラミング表記法のレビュー

このセクションでは、キーワード、データ型、エスケープ文字、文字フォーマッタなど、作成者が重要であると考えるコンテンツをいくつかのカテゴリに分けてリストします。

次に、学習するコードを見つけます。学習するには、次の手順に従ってください。

1. 学習したいコードの部分を一度に 1 つずつ印刷します。

2. 以下の手順に従って、学習する注釈を追加します。

1. 機能とその機能 機能とその機能

2. 各変数に最初に値が割り当てられる場所: 各変数に最初に値が割り当てられる位置。

3. プログラムの別の場所に同じ名前の変数があると、後で問題が発生する可能性があります 同じ名前の変数が別の場所にあると、後で問題が発生する可能性があります。

4. else 節のない if ステートメント 正しいですか? else 節のない IF ステートメント。彼らは正しいでしょうか?

5. 終了しない可能性のある while ループ 終了しない可能性のある while ループ。

6. 最後に、何らかの理由で理解できないコード部分。

3. コメントを使用してコードを説明します。関数を説明します: 関数が何をするのか、どのような変数が関係するのか。

4. 一部の難しいコードの場合は、変数を行ごとに、関数ごとに追跡できます。コードの別のコピーを印刷し、ページの余白に追跡変数の値を書き込むことができます。

練習する:

1. フローチャートを研究し、自分でフローチャートを描いてみます。

2. 調査中のコードでエラーを見つけた場合は、それを修正し、加えた変更を作成者に伝えてください。

3. 紙がない場合は、コンピューター上のコメント # を使用して記入することもできます。

ex38: 「リスト」の使い方を学ぶ

このレッスンの著者はリストの操作に焦点を当てています。スプリットメソッドとポップメソッド。同時に、最初にクラスを紹介するために例が使用されていますが、もちろん、次の章で詳しく学習します。

mystuff.append('hello') の実行プロセスを説明するために、クラスの小さな例が使用されます。

クラス モノ(オブジェクト):

デフォルトテスト(hi):

印刷 (「こんにちは」)

a = 物()

テスト()

次のコードには、リスト操作の例が含まれています。

ten_things = "リンゴ、オレンジ、カラス、電話、微糖"

print (「待ってください、そのリストには 10 個の項目がありません。修正しましょう。」)

スタッフ = ten_things.split(" ")

more_stuff = ["昼","夜","歌","フリスビー","トウモロコシ","バナナ","女の子","男の子"]

while len(stuff) != 10:

next_one = more_stuff.pop()

print( "追加: ", next_one)

スタッフ.append(next_one)

print("現在 %d 個の項目があります。" % len(stuff))

合格

print (「さあ、行きます:」など)

print (「何かを使って何かをしましょう。」)

印刷 (スタッフ[1])

印刷 (スタッフ[-1])

print (stuff.pop())

print (" ".join(stuff))

print ("#".join(stuff[3:5]))

リストの要素参照操作、リストのポップ、結合操作に注意してください。

ex39: 辞書、かわいい辞書 (辞書は Python の新しいデータ構造です)

リストの要素は数値を使用してのみ取得できます。ディクショナリを使用すると、数値以外の値を持つ型の要素を参照できます。辞書のようなもので、ピンインがわかれば調べることができます。

次のコードを IDLE で実行できます。

>>> スタッフ = {'名前': 'ゼッド', '年齢': 36, '身長': 6*12+2}

>>> print (スタッフ['名前'])

ゼッド

>>> 印刷 (スタッフ['年齢'])

36

>>> print (stuff['height'])

74

>>> スタッフ['都市'] = "サンフランシスコ"

>>> 印刷 (スタッフ['都市'])

サンフランシスコ

>>>

# 州と略語のマッピングを作成する

状態 = {

「オレゴン」: 「または」、

「フロリダ」: 「フロリダ」、

「カリフォルニア」: 「CA」、

「ニューヨーク」: 「ニューヨーク」、

'Michigan': 'MI'

}

# 州とその中のいくつかの都市の基本セットを作成します

都市 = {

「CA」: 「サンフランシスコ」、

「MI」: 「デトロイト」、

「フロリダ」: 「ジャクソンビル」

}

# さらにいくつかの都市を追加します

都市['NY'] = 'ニューヨーク'

都市['OR'] = 'ポートランド'

# いくつかの都市を出力します

印刷 ('-' * 10)

print ("ニューヨーク州には次のものがあります: ", city['NY'])

print ("OR 州には次のものがあります: ", city['OR'])

# いくつかの状態を出力します

印刷 ('-' * 10)

print ("ミシガン州の略称は次のとおりです: ", states['Michigan'])

print ("フロリダの略称は次のとおりです: ", states['フロリダ'])

# 州、都市の辞書を使用して実行します

印刷 ('-' * 10)

print ("ミシガン州には: ", 都市[州['ミシガン']])

print ("フロリダには次のものがあります: ", citys[states['Florida']])

# すべての州の略語を出力します

印刷 ('-' * 10)

状態の場合、states.items() の略称:

print ("%s は %s の省略形です" % (状態、省略形))

# 州内のすべての都市を出力します

印刷 ('-' * 10)

略称、citys.items() の都市:

print ("%s には都市 %s があります" % (省略形、都市))

# 両方を同時に実行します

印刷 ('-' * 10)

状態の場合、states.items() の略称:

print ("%s 州は %s と略され、市は %s" % (

州、略語、都市[略語]))

印刷 ('-' * 10)

# 存在しない可能性のある州別の略語を安全に取得します

state = states.get('テキサス', なし)

そうでない場合は次のように述べます。

print (「申し訳ありませんが、テキサスではありません。」)

# デフォルト値の都市を取得する

city = city.get('TX', '存在しません')

print ("TX" 州の都市は: %s" % city)

考えられる質問:

1. リストと辞書の違いは何ですか?

リストは、項目の順序付きリストです。辞書 (または dict) は、一部の項目 (「キー」と呼ばれる) を他の項目 (「値」と呼ばれる) と照合するためのものです。

help(list)、help(dict) を使用してヘルプを照会できます。

2. 辞書を使用できるシナリオの例を挙げてください。リストについてはどうですか?

ある値を取得し、別の値を「検索」する必要があるときはいつでも。実際、辞書を「検索テーブル」と呼ぶこともできます。

リストは、順番に処理する必要がある一連のものであり、数値インデックスによって検索するだけで済みます。

3. 辞書が必要だが並べ替えもしたい場合はどうすればよいですか? (コレクション.OrderedDict)

ex40: モジュール、クラス、オブジェクト

このセクションでは、よく知られている辞書とモジュールの概念を使用して、クラスの基本概念を紹介します。

モジュールはコードの一部であり、*.py に個別に保存されます。辞書と似ています。

辞書の場合、キーは文字列であり、構文は [key] です。モジュールの場合、キーは識別子であり、構文は .key です。それ以外はほぼ同じものです。

クラスはモジュールのようなものです。

モジュールについて考える方法は、モジュールは Python コードを保存できる特殊な辞書であり、「.」でアクセスできるようにするということです。オペレーター。Python には、クラスと呼ばれる同様の目的を果たす別の構造もあります。クラスは、関数とデータをグループ化してコンテナー内に配置し、「.」を使用してアクセスできるようにする方法です。(ドット) 演算子。

オブジェクトは小さなインポートのようなものです。インスタンス化とも呼ばれます。

ex40a.py

クラスMyStuff(オブジェクト):

def __init__(自分自身):

self.tangerine = "そして今、千年の間"

デフアップル(自分):

印刷 (「私は上品なリンゴです!」)

もの = MyStuff()

thing.apple()

プリント(もの.みかん)

ex40b.py

クラスソング(オブジェクト):

def __init__(自己、歌詞):

self.lyrics = 歌詞

def sing_me_a_song(自分):

self.lyrics のライン:

印刷(行)

happy_bday = Song([「お誕生日おめでとう」,

「訴えられたくない」

「だから、そこでやめておきます」])

bulls_on_parade = Song(["彼らは家族の周りに集結します",

「貝殻がいっぱい入ったポケット付き」])

happy_bday.sing_me_a_song()

bulls_on_parade.sing_me_a_song()

考えられる質問:

1. クラス内で __init__ や他の関数を定義するときに (self) を渡す必要があるのはなぜですか?

self が渡されていないため、変数が十分に明確ではなく、main 関数を参照しているのか、クラス内の変数を参照しているのかがわかりません。

EX41: オブジェクト指向言語の学習

このセクションでは、学習カテゴリーを単語トレーニング、フレーズトレーニング、およびその 2 つを組み合わせたトレーニングの 3 つの側面に分類します。

時間があるときにこれらすべてをカードに書き留めて暗記できます。

1.単語:

class : Python に新しい種類のものを作成するように指示します。

object : 2 つの意味: 最も基本的な種類の物と、ある物のインスタンス。

インスタンス : Python にクラスを作成するように指示したときに得られるもの。

def : クラス内で関数を定義する方法。

self : クラス内の関数内では、self はアクセスされるインスタンス/オブジェクトの変数です。

継承 : あなたやあなたの両親と同じように、あるクラスが別のクラスから特性を継承できるという概念。

構成 : 車に車輪があるのと同じように、クラスを部品として他のクラスで構成できるという概念。

属性 : クラスが持つプロパティは合成からのもので、通常は変数です。

is-a : Salmon is-a Fish のように、何かが他のものから継承することを言うフレーズ。

has-a : 鮭には口があるというように、何かが他のもので構成されている、または特性があることを言うフレーズ。

2. フレーズ:

クラスX(Y)

「Y である X という名前のクラスを作成します。」

クラス X(オブジェクト): def __init__(self, J)

「クラス X には、self パラメータと J パラメータを取る __init__ があります。」

クラス X(オブジェクト): def M(self, J)

「クラス X には、self パラメータと J パラメータを取る M という名前の関数があります。」

foo = X()

「foo をクラス X のインスタンスに設定します。」

foo.M(J)

「foo から M 関数を取得し、パラメータ self、J を指定して呼び出します。」

foo.K = Q

「foo から K 属性を取得し、それを Q に設定します。」

もちろん、コンピューターを持つことの利点は、プログラムに記憶を助けてもらえることです。

ランダムにインポート

urllib.requestをインポートする

インポートシステム

WORD_URL = "http://learncodethehardway.org/words.txt"

言葉 = []

フレーズ = {

"クラス ###(###):":

"### という名前のクラスを作成します。これは ### です。",

"クラス ###(オブジェクト):\n\tdef __init__(self,***)":

"クラス ### には、self パラメータと *** パラメータを取る __init__ があります。",

"クラス ###(オブジェクト):\n\tdef __init__(self,@@@)":

"クラス ### には、self パラメーターと @@@ パラメーターを受け取る *** という名前の関数があります。",

"*** = ###()":

"*** をクラス ### のインスタンスに設定します。",

"***py.***(@@@)":

"*** から *** 関数を取得し、パラメータ self、@@@ を指定して呼び出します。",

"***.*** = '***'":

「*** から *** 属性を取得し、それを '***' に設定します。」

}

#最初にフレーズをドリルしたいですか

PHRASES_FIRST = False

len(sys.argv) == 2 かつ sys.argv[1] == "english" の場合:

PHRASES_FIRST = True

#ウェブサイトから単語をロードします

urllib.request.urlopen(WORD_URL).readlines() の単語の場合:

WORDS.append(word.strip().decode("utf-8")) #ここにバイトから str への変換があります

印刷(WORDS)

def Convert(スニペット、フレーズ):

class_names = [w.capitalize() for w in

ランダム.サンプル(WORDS、スニペット.カウント("###"))]

other_names = random.sample(WORDS,snippet.count("***"))

結果 = []

param_names = []

for i in range(0,snippet.count("@@@")):

param_count = ランダム.randint(1,3)

param_names.append(", ".join(random.sample(WORDS, param_count)))

スニペット内の文、フレーズ:

結果 = 文[:]

#偽のクラス名

class_names の単語の場合:

result = result.replace("###", 単語, 1)

#偽の別名

other_names の単語:

result = result.replace("***", 単語, 1)

#偽のパラメータリスト

param_names の単語:

result = result.replace("@@@", word, 1)

結果.追加(結果)

結果を返す

#CTRL-D を押すまで続けます

試す:

True の場合:

スニペット = PHRASES.keys()

random.shuffle(list(snippets))#表示リストの変換はここで行われます

スニペット内のスニペットの場合:

フレーズ = PHRASES[スニペット]

質問、回答 = Convert(スニペット、フレーズ)

PHRASES_FIRSTの場合:

質問、答え = 答え、質問

印刷(質問)

入力("> ")

print ("答え: %s\n\n" % 答え)

EOFエラーを除く:

print("\nさようなら")

ex42:Is-A、Has-A、オブジェクト、およびクラス

確認したところ、著者はすでにこの本の Python 3 バージョンを持っています。しかし、私は今のところ中国語訳を見たことがありません。20170701

Python について詳しく学ぶための Web サイト:

Python のバイト、スタンフォードを含む多くの学校の教科書 (https://mygsb.stanford.edu/sites/default/files/A Byte of Python.pdf)

公式サイト教材

4. GUIプログラミング

素敵な Python: Python での TK プログラミング

5. Python中国語マニュアル

6. Python の実験的な構築

おすすめ

転載: blog.csdn.net/chatgpt002/article/details/132977560