1日1つのPython乾物:「自動化の基本」:条件付き判断ステートメント

条件付き判断

コンピュータが多くの自動化されたタスクを実行できる理由は、コンピュータがそれ自体で条件付きの判断を下すことができるからです。P

たとえば、ユーザーの年齢を入力し、年齢に応じて異なるコンテンツを印刷します。Pythonプログラムで、ifステートメントを使用して次のことを実現します。

age = 20if age >= 18: print('your age is', age) print('adult')

Pythonのインデント規則によれば、ifステートメントがTrueと判断された場合、2つのインデントされたprintステートメントが実行され、それ以外の場合は何も実行されません。

ifにelseステートメントを追加することもできます。これは、ifの判断がFalseの場合、ifの内容を実行せず、elseを実行することを意味します。

age = 3if age >= 18: print('your age is', age) print('adult')
else: print('your age is', age) print('teenager')

コロンを省略しないように注意してください:。

もちろん、上記の判断は非常に大まかなものです。elifを使用してより詳細な判断を下すことができます。

age = 3if age >= 18: print('adult')elif age >= 6: print('teenager')else: print('kid')

elif是else if的缩写,完全可以有多个elif,所以if语句的完整形式就是:

if <条件判断1>: <执行1>elif <条件判断2>: <执行2>elif <条件判断3>: <执行3>else: <执行4>

if文の実行には特徴があり、上から下に判断されます。ある判断が真の場合、その判断に対応する文を実行した後、残りのエリフなどは無視されますので、その理由をテストして説明してください。プリント

teenager:
age = 20if age >= 6: print('teenager')elif age >= 18: print('adult')else: print('kid')

if判定条件は、次のように省略できます。

if x: print('True')

xがゼロ以外の値、空でない文字列、空でないリストなどである限り、Trueと判断され、そうでない場合はFalseと判断されます。

input

最後に、問題のある条件付き判断を見てください。多くの学生はinput()を使用してユーザーの入力を読み取り、自分で入力できるようにします。プログラムはより面白く実行されます。

birth = input('birth: ')if birth < 2000: print('00前')else: print('00后')

1982と入力すると、結果はエラーになります。

Traceback (most recent call last): File "", line 1, in TypeError: unorderable types: str() > int()

これは、input()によって返されるデータ型がstrであるためです。Strを整数と直接比較することはできません。最初にstrを整数に変換する必要があります。Pythonは、これを実現するためにint()関数を提供します。

s = input('birth: ')birth = int(s)if birth < 2000: print('00前')else: print('00后')

もう一度実行して、正しい結果を取得してください。しかし、abcと入力するとどうなりますか?別のエラーメッセージが表示されます。

Traceback (most recent call last): File "", line 1, in ValueError: invalid literal for int()
 with base 10: 'abc'

文字列が有効な数値ではないことが検出されると、int()関数がエラーを報告し、プログラムが終了することがわかりました。

推奨事項:020は継続的に更新され、小さなブティックサークルには毎日新しいコンテンツがあり、乾物の濃度は非常に高くなっています。
接続してテクノロジーについて話し合いたいものはすべてあります。
グループに最初に参加して、仲間をしのぐようにしましょう!(グループへの参加は無料です)
Python開発者とのコミュニケーションと学習については、ここをクリックしてください。
グループ番号:745895701、
アプリケーション
Pythonソフトウェアインストールパッケージ、Python実際の戦闘チュートリアル、
Pythonの基本学習、高度な学習、クローラー、人工知能、自動操作とメンテナンス、自動テストなどを含む資料の無料コレクション。

サイクル

1 + 2 + 3を計算するには、次の式を直接記述します。

>>> 1 + 2 + 36

1 + 2 + 3 +…+ 10を計算するには、ほとんど書き出すことができません。

ただし、1 + 2 + 3 +…+ 10000を計算するために、式を直接記述することはできません。

コンピューターが何千もの繰り返し演算を計算するためには、ループステートメントが必要です。

for ...ループ内

Pythonループには2つのタイプがあります。1つはfor ... inループで、リストまたはタプルの各要素を順番に繰り返します。例を参照してください。

names = ['Michael', 'Bob', 'Tracy']
for name in names: print(name)

このコードを実行すると、名前の各要素が順番に出力されます。

MichaelBobTracy

したがって、for x in…ループは、各要素を変数xに代入し、インデントされたブロックのステートメントを実行して毎回出力します。たとえば、1から10までの整数の合計を計算する場合は、合計変数を使用して累積できます。

sum = 0for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: 
sum = sum + xprint(sum)

1から100までの整数の合計を計算したい場合、1から100までを書くのは少し難しいです。

Pythonはrange()関数を提供します。これは整数のシーケンスを生成でき、list()関数を介してリストに変換できます。たとえば、range(5)によって生成されるシーケンスは、0から始まる5未満の整数です。

>>> list(range(5))[0, 1, 2, 3, 4]

range(101)は、0〜100の整数のシーケンスを生成できます。これは、次のように計算されます。

最初:

入る:

出力:

2番目のタイプ:入力:

出力:

インデントに注意してください。異なる結果が出力されます。次のように入力します。

出力:

whileループ

2番目のタイプのループはwhileループです。条件が満たされている限り、ループを継続します。条件が満たされない場合、ループは終了し、最後のループの結果が出力されます。

たとえば、100以内のすべての奇数の合計を計算する場合は、whileループを使用できます。

sum = 0n = 99while n > 0:
sum = sum + n n = n - 2print(sum)

ループでは、変数nは-1になるまでデクリメントを続け、while条件は満たされなくなり、ループは終了します。

入る:

出力:

ブレーク

ループでは、breakステートメントはループを早期に終了してプログラムを終了できますが、ifステートメントと組み合わせて使用​​する必要があります。たとえば、1〜10を印刷した後、すぐにENDを印刷すると、プログラムは終了します。

n = 1while n <= 100: if n > 10: # 当n = 11时,条件满足,执行break语句 break 
# break语句会结束当前循环 

print(n) n = n + 1print('END')

continue

ループプロセスでは、continueステートメントを使用して現在のループをスキップし、次のループを直接開始することもできますが、ifステートメントと組み合わせて使用​​する必要があります。

1〜10の奇数のみを出力する場合は、continueステートメントでいくつかのループをスキップできます。

n = 0while n < 10: n = n + 1 if n % 2 == 0: 
# 如果n是偶数,执行continue语句 continue 
# continue语句会直接继续下一轮循环,后续的print()语句不会执行 print(n)

上記のコードを実行すると、プリントが1〜10ではなく、1、3、5、7、9であることがわかります。

特別な注意を払ってください:休憩と継続のステートメントを乱用しないでください。

辞書、{}

Pythonには辞書が組み込まれています:dictがサポートされています。dictのフルネームは辞書で、他の言語ではマップとも呼ばれます。キー値ストレージを使用し、検索速度が非常に高速です。

たとえば、クラスメートの名前に従って対応するスコアを検索するとします。dictを使用してそれを達成する場合は、「名前」と「スコア」の比較テーブルのみが必要であり、に基づいて直接スコアを検索できます。テーブルがどんなに大きくても、検索速度は遅くなりません。次のようにPythonでdictを記述します。

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']95

このKey-Valueの格納方法では、入力するときに、キーに基づいて値の格納場所を計算する必要があります。これにより、取得時にキーに基づいて値を直接取得できます。

初期化中の指定に加えて、データをdictに入れる方法も、キーに入れることができます。

>>> d['Adam'] = 67
>>> d['Adam']67

キーは1つの値にしか対応できないため、キーを複数回値に入れると、次の値で前の値が消去されます。

>>> d['Jack'] = 90>>> d['Jack']90>>> d['Jack'] = 88
>>> d['Jack']88
>>> d
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85,'Adam':67,'Jack':88}

キーが存在しない場合、dictはエラーを報告します。

>>> d['Thomas']Traceback (most recent call last):
File "", line 1, in KeyError: 'Thomas'

キーが存在しないというエラーを回避するには、2つの方法があります。1つは、次の方法でキーが存在するかどうかを判断することです。

>>> 'Thomas' in dFalse

2つ目は、dictが提供するget()メソッドを使用する方法です。キーが存在しない場合は、None、または指定した値を返すことができます。

>>> d.get('Thomas')
>>> d.get('Thomas', -1)-1

注:Pythonの対話型環境では、Noneが返された場合に結果が表示されません。

キーを削除するには、pop(key)メソッドを使用すると、対応する値もdictから削除されます。

>>> d.pop('Bob')75
>>> d{'Michael': 95, 'Tracy': 85}

dictの内部ストレージの順序は、キーが配置される順序とは関係がないことに注意することが重要です。

リストと比較すると、dictには次の特徴があります。

検索と挿入の速度は非常に速く、キーの増加に伴って遅くなることはありません。それは多くのメモリを消費し、多くのメモリを浪費します。

リストの反対:

要素の増加に伴い、検索と挿入の時間が長くなります。スペースをほとんどとらず、メモリの浪費もほとんどありません。

したがって、辞書は空間を時間と交換する方法です。

dictは、高速検索が必要な多くの場所で使用できます。Pythonコードのほとんどすべての場所で使用できます。dictを正しく使用することは非常に重要です。最初に覚えておくべきことは、dictのキーは不変オブジェクトでなければならないということです。 。

これは、dictがキーに応じて値の格納場所を計算するためです。毎回同じキーを計算した結果が異なると、dictは完全に混乱します。キーによって場所を計算するこのアルゴリズムは、ハッシュアルゴリズム(ハッシュ)と呼ばれます。

ハッシュの正確性を確保するために、キーオブジェクトを変更することはできません。

Pythonでは、文字列、整数などは不変であるため、キーとして安全に使用できます。リストは可変であり、キーとして使用することはできません。

>>> key = [1, 2, 3]
>>> d[key] = 'a list'Traceback (most recent call last): File "", line 1, in TypeError: unhashable type: 'list'

セットする

Setはdictに似ています。これもキーのセットですが、値を格納しません。キーを繰り返すことができないため、セットに重複するキーはありません。

セットを作成するには、入力セットとしてリストを提供する必要があります。

>>> s = set([1, 2, 3])
>>> s{1, 2, 3}

入力パラメータ[1、2、3]はリストであり、表示される{1、2、3}は、セット内に1、2、および3の3つの要素があることを示しているだけであり、表示順序はセットが注文されていることを示していません。

繰り返される要素は、セット内で自動的にフィルタリングされます。

>>> s = set([1, 1, 2, 2, 3, 3])
>>> s{1, 2, 3}

add(key)メソッドを使用してセットに要素を追加したり、要素を繰り返し追加したりできますが、効果はありません。

>>> s.add(4)
>>> s{1, 2, 3, 4}
>>> s.add(4)
>>> s{1, 2, 3, 4}

要素は、remove(key)メソッドを使用して削除できます。

>>> s.remove(4)
>>> s{1, 2, 3}

セットは、数学的な意味では無秩序で非反復的な要素のセットと見なすことができます。したがって、2つのセットは、数学的な意味で交差や和集合などの演算を実行できます。

>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2{2, 3}
>>> s1 | s2{1, 2, 3, 4}

setとdictの唯一の違いは、対応する値が格納されないことです。ただし、setの原理はdictと同じであるため、変数オブジェクトを同じように配置することはできません。2つであるかどうかを判断できないためです。変数オブジェクトが等しい場合、セットは保証されません。内部に「重複する要素はありません」。リストをセットに入れて、エラーが報告されるかどうかを確認してください。

不変オブジェクトについてもう一度話します

上で述べたように、strは不変オブジェクトであり、listは可変オブジェクトです。

リストなどの可変オブジェクトの場合、リストを操作すると、リストの内容が次のように変更されます。

>>> a = ['c', 'b', 'a']
>>> a.sort()
>>> a['a', 'b', 'c']

また、strなどの不変オブジェクトの場合は、strに対して操作を実行します。

>>> a = 'abc'
>>> a.replace('a', 'A')'Abc'
>>> a'abc'

文字列にはreplace()メソッドがありますが、「Abc」は変更されますが、変数aは最後に「abc」のままです。どのように理解すればよいでしょうか。

まず、コードを次のように変更しましょう。

>>> a = 'abc'
>>> b = a.replace('a', 'A')
>>> b'Abc'
>>> a'abc'

aは変数であり、「abc」は文字列オブジェクトであることに常に注意してください。オブジェクトaのコンテンツは「abc」であるとよく言われますが、実際には、それ自体が変数であり、オブジェクトが指すオブジェクトのコンテンツは「abc」であることを意味します。

┌───┐ ┌───────┐│ a │─────────────────>│ 'abc' │└───┘ └───────┘

a.replace( 'a'、 'A')を呼び出すと、実際にメソッドreplaceを呼び出すと、文字列オブジェクト 'abc'が機能します。このメソッドはreplaceと呼ばれますが、文字列 'abc' 'の内容は変更されません。逆に、replaceメソッドは新しい文字列「Abc」を作成して返します。変数bを使用して新しい文字列を指すと、理解しやすくなります。変数aは元の文字列「abc」を指しますが、変数bは新しい文字列「Abc」を指します。

┌───┐ ┌───────┐│ a │─────────────────>│ 'abc' │└───┘ 
└───────┘┌───┐ ┌───────┐│ b │─────────────────>│ 'Abc' │└───┘ 
└───────┘

したがって、不変オブジェクトの場合、オブジェクト自体のメソッドを呼び出しても、オブジェクト自体のコンテンツは変更されません。代わりに、これらのメソッドは新しいオブジェクトを作成して返すため、不変オブジェクト自体が常に不変であることが保証されます。

概要

キーと値のストレージ構造を持つdictは、Pythonで非常に役立ちます。キーとして不変オブジェクトを選択することが重要です。最も一般的に使用されるキーは文字列です。

タプルは不変オブジェクトですが、(1、2、3)と(1、[2、3])をdictまたはsetに入れて、結果を説明してみてください。

おすすめ

転載: blog.csdn.net/Python_xiaobang/article/details/113109221