Pythonを自分で学習するためのこの一連のメモ、エラーがある場合は、訂正してください
結果を選択
選択構造は、条件が真であるかどうかを判断することにより、実行するブランチを決定します。選択構造には、単一ブランチ、二重ブランチ、および複数ブランチに分けられる多くの形式があります。フローチャートは次のとおりです。
[外部リンク画像の転送に失敗しました。ソースサイトにヒル防止リンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします(img-9jFYUifK-1610702861337)(。\ images \ image-20210115152646962.png)]
[外部リンク画像の転送に失敗しました。ソースサイトにヒル防止リンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします(img-RcXKw5zK-1610702861353)(。\ images \ image-20210115152744007.png)]
単一ブランチ選択構造
ifステートメントの単一分岐結果の文法形式は次のとおりです。
条件式の場合:
ステートメント/ブロック
その中で:
- 条件式:論理式、関係式、算術式などがあります。
- ステートメント/ステートメントブロック:1つのステートメントまたは複数のステートメントにすることができます。複数のステートメント、インデントを揃える必要があります
num = input('请输入一个数字:')
if int(num)<10:
print(num)
条件式の詳細な説明
選択およびループ構造では、条件式の値は次のようにFalseです。
False 0 0.0 Null値なし、空のシーケンスオブジェクト(空のリスト、空のセット、空の辞書、空の文字列)、空の範囲オブジェクト、空の反復オブジェクト
他のすべての場合は真です。
if 3: #整数作为条件表达式
print('ok')
a = [] #列表作为表达式 空列表为False
if a:
print('空列表 False')
s = 'False' #非空字符串
if s:
print('非空字符串')
c = 9
if 3<c and c<20:
print("3<c and c<20")
if True: #布尔值
print("True")
条件式に代入演算子を含めることはできません =
二重分岐選択構造
条件式の場合:
ステートメントブロック/ステートメント
そうしないと:
ステートメント
num = input('请输入一个数字')
if int(num)<10:
print(num)
else:
print('数字太大')
三項条件演算子
Pythonは、いくつかの単純な二重分岐割り当て状況で使用される3項演算子、3項条件演算子構文を提供します。
条件が真の場合の値if(条件式)それ以外の場合の条件が偽の場合の値
num = input('请输入一个数字')
print(num if int(num)<10 else '数字太大')
マルチブランチ選択構造
条件式の場合1:
ステートメント/ブロック
elif条件式2:
ステートメント/ブロック
…
そうしないと:
ステートメント/ブロック
[外部リンク画像の転送に失敗しました。ソースサイトにヒル防止リンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします(img-zI3Enszj-1610702861355)(。\ images \ image-20210115160316557.png)]
score = int(input('请输入分数'))
grade = ''
if score<60:
grade = '不及格'
elif score>=60 and score<70:
grade='及格'
elif score>=70 and score<80:
grade = '良好'
else:
grade = '优秀'
print('分数是{0},等级是{1}'.format(score,grade))
構造のネストを選択する
選択構造はネストできます。インデントはコードの従属を決定するため、使用する場合は、さまざまなレベルのコードブロックのインデントを制御するように注意する必要があります。
式1の場合:
ステートメントブロック1
式2の場合:
ステートメントブロック2:
else:
ステートメントブロック
そうしないと:
ステートメントブロック
ループ構造
ループ構造は、1つ以上のステートメントの繰り返し実行を使用します。式ロジック:条件が満たされると、ループ本体のステートメントが繰り返し実行されます。各実行後、条件がTrueであるかどうかを判断し、Trueの場合、ループが繰り返されます。
[外部リンク画像の転送に失敗しました。ソースサイトにヒル防止リンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします(img-IIricoFW-1610702861357)(。\ images \ image-20210115161743080.png)]
ループ本体のステートメントには、少なくとも条件式を変更するステートメントが含まれている必要があります。そうしないと、ループが終了する傾向があります。そうでない場合、無限ループになります。
whileループ
while 判断条件(condition): 执行语句(statements)……
n = 100
sum = 0
counter = 1
while counter <= n:
sum = sum + counter
counter += 1
print("1 到 %d 之和为: %d" % (n,sum))
無限ループ
条件式を決してfalseに設定しないことで、無限ループを実現できます。
var = 1
while var == 1 : # 表达式永远为 true
num = int(input("输入一个数字 :"))
print ("你输入的数字是: ", num)
print ("Good bye!")
CTRL + Cを使用して、現在の無限ループを終了できます。
無限ループは、サーバーでのリアルタイムのクライアント要求に非常に役立ちます。
forループと反復可能なオブジェクトトラバーサル
forループは通常、反復可能なオブジェクトをトラバースするために使用されます。forループの構文形式は次のとおりです。
反復可能なオブジェクトの変数の場合:
ループ本体ステートメント
反復可能なオブジェクト
- シーケンス:文字列のリストの祖先
- 辞書
- イテレータの配置
- ジェネレータオブジェクト
for x in list('slp'):
print(x)
d = {
'name':'slp','age':18,'address':'bj'}
for x in d: #遍历所有的key
print(x)
for x in d.keys():#遍历字典所有的key
print(x)
for x in d.values():#遍历字典所有的value
print(x)
for x in d.items():#遍历字典所有的键值对
print(x)
範囲オブジェクト
範囲オブジェクトは、指定された範囲の数値を生成するために使用されるイテレータオブジェクトであり、形式は次のとおりです。range(start、end [、step])
sum_all=0
sum_even=0
sum_odd=0
for num in range(101):
sum_all +=num
if num%2 ==0:
sum_even+=num
else:
sum_odd+=num
print(sum_all,sum_even,sum_odd)
ネストされたループ
ループは、一般にネストされたループまたは複数のループと呼ばれる別のループに埋め込むことができます
例:99の掛け算の九九を印刷する:
for m in range(1,10):
for n in range(1,m+1):
print(m,'*',n,'=',m*n ,end='\t')
print('')
breakステートメント
breakステートメントはwhileループとforループで使用して、ループ全体を終了できます。ネストがある場合、breakステートメントは最も近いループからのみジャンプできます
[外部リンク画像の転送に失敗しました。ソースサイトにヒル防止リンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします(img-nB6cRFES-1610702861364)(。\ images \ E5A591EF-6515-4BCB-AEAA- A97ABEFC5D7D.jpg)]
while True:
a = input('输入Q退出')
if a.upper() == 'Q':
print('退出')
break
else:
print('继续')
ステートメントを続ける
continueは、このループを終了して次回まで続行するために使用されます。ネストも適用され、最新のループが適用されます。
[外部リンク画像の転送に失敗しました。元のサイトにヒル防止リンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします(img-aqfENPtv-1610702861366)(。\ images \ 8962A4F1-B78C-4877-B328- 903366EA1470.jpg)]
n = 5
while n > 0:
n -= 1
if n == 2:
continue
print(n)
print('循环结束。')
empNum = 0
salarySum = 0;
salarys = []
while True:
s = input('请输入员工的工资(q或Q结束)')
if s.upper() =='Q':
print('录入完成 退出')
break;
if float(s)<0:
continue;
empNum+=1
salarys.append(float(s))
salarySum +=float(s)
print('员工数{0}'.format(empNum))
print('录入薪资',salarys)
print('平均薪资{0}'.format(salarySum/empNum))
passステートメント
Pythonパスは、プログラム構造の整合性を維持するための空のステートメントです。
passは何もしません。通常、プレースホルダーステートメントとして使用されます。
ループコードの最適化
- ループ内の不要な計算を最小限に抑える
- ネストされたループでは、内側のループの数を減らし、可能な限り外側に持ち上げるようにしてください
- ローカル変数のクエリは高速です。ローカル変数を使用してみてください
その他の最適化方法
- 複数の文字列を連結し、+の代わりに結合を使用します
- リスト内の要素を挿入および削除し、最後に操作してみてください
zip()を使用して並行して反復します
zip()関数を使用して、複数のシーケンスを並行して繰り返すことができます。zip()関数は、最短のシーケンスが使い果たされると停止します。
names = ('a','b','c')
ages =(16,10)
jobs = ('teacher','programmer','drive')
for name,age,job in zip(names,ages,jobs):
print("{0}--{1}--{2}".format(name,age,job))
WeChatで[Zixin]を検索するか、以下のQRコードをスキャンして、友達を作り、一緒に進歩してください。記事は継続的に更新されます。現在、Python百戦の研究ノートを整理しており、今後のアップデートを楽しみにしています。