Python小白入門系列教程第二章
- 條件陳述句
- 了解條件陳述句
- if 語法
- 實體
- if...else...
- 多重判斷
- if嵌套
- 應用:猜拳游戲需求分析:
- 三目運算子
- 小結
- 回圈
- 回圈簡介
- while的語法
- while的應用
- break和continue
- while回圈嵌套
- while回圈嵌套應用
- for回圈
- else
- 小結
條件陳述句
了解條件陳述句
假設一個場景:
- 同學們這個年齡去過網吧嗎?
- 去網吧進門想要上網必須做的一件事是做什么?(考慮重點)
- 為什么要把身份證給作業人員?
- 是不是就是為了判斷是否成年?
- 是不是如果成年可以上網?如果不成年則不允許上網?
其實這里所謂的判斷就是條件陳述句,即條件成立執行某些代碼,條件不成立則不執行這些代碼,
if 語法
語法
if 條件:
條件成立執行的代碼1
條件成立執行的代碼2
......
快速體驗
if True:
print('條件成立執行的代碼1')
print('條件成立執行的代碼2')
# 下方的代碼沒有縮進到if陳述句塊,所以和if條件無關
print('我是無論條件是否成立都要執行的代碼')
執行結果如下:

實體
需求分析:如果用戶年齡大于等于18歲,即成年,輸出"已經成年,可以上網",
簡單版
age = 20
if age >= 18:
print('已經成年,可以上網')
print('系統關閉')
進階版
新增需求:用戶可以輸出自己的年齡,然后系統進行判斷是否成年,成年則輸出"您的年齡是’用戶輸入的年齡’,已經成年,可以上網",
# input接受用戶輸入的資料是字串型別,條件是age和整型18做判斷,所以這里要int轉換資料型別
age = int(input('請輸入您的年齡:'))
if age >= 18:
print(f'您的年齡是{age},已經成年,可以上網')
print('系統關閉')
if…else…
作用:條件成立執行if下方的代碼; 條件不成立執行else下方的代碼,
思考:網吧上網的實體,如果成年,允許上網,如果不成年呢?是不是應該回復用戶不能上網?
語法
if 條件:
條件成立執行的代碼1
條件成立執行的代碼2
......
else:
條件不成立執行的代碼1
條件不成立執行的代碼2
......
實用版:網吧上網
age = int(input('請輸入您的年齡:'))
if age >= 18:
print(f'您的年齡是{age},已經成年,可以上網')
else:
print(f'您的年齡是{age},未成年,請自行回家寫作業')
print('系統關閉')
注意:如果條件成立執行了某些代碼,那么其他的情況的代碼將不會執行,
多重判斷
思考:中國合法作業年齡為18-60歲,即如果年齡小于18的情況為童工,不合法;如果年齡在18-60歲之間為合法工齡;大于60歲為法定退休年齡,
語法
if 條件1:
條件1成立執行的代碼1
條件1成立執行的代碼2
......
elif 條件2:
條件2成立執行的代碼1
條件2成立執行的代碼2
......
......
else:
以上條件都不成立執行執行的代碼
多重判斷也可以和else配合使用,一般else放到整個if陳述句的最后,表示以上條件都不成立的時候執行的代碼,
實體:工齡判斷
age = int(input('請輸入您的年齡:'))
if age < 18:
print(f'您的年齡是{age},童工一枚')
elif (age >= 18) and (age <= 60):
print(f'您的年齡是{age},合法工齡')
elif age > 60:
print(f'您的年齡是{age},可以退休')
拓展:
age >= 18 and age <= 60可以化簡為18 <= age <= 60,
if嵌套
思考:坐公交:如果有錢可以上車,沒錢不能上車;上車后如果有空座,則可以坐下;如果沒空座,就要站著,怎么書寫程式?
語法
if 條件1:
條件1成立執行的代碼
條件1成立執行的代碼
if 條件2:
條件2成立執行的代碼
條件2成立執行的代碼
注意:條件2的if也是處于條件1成立執行的代碼的縮進關系內部,
坐公交
判斷是否能上車
"""
1. 如果有錢,則可以上車
2. 上車后,如果有空座,可以坐下
上車后,如果沒有空座,則站著等空座位
如果沒錢,不能上車
"""
# 假設用 money = 1 表示有錢, money = 0表示沒有錢
money = 1
if money == 1:
print('土豪,不差錢,順利上車')
else:
print('沒錢,不能上車,追著公交車跑')
判斷是否能坐下
"""
1. 如果有錢,則可以上車
2. 上車后,如果有空座,可以坐下
上車后,如果沒有空座,則站著等空座位
如果沒錢,不能上車
"""
# 假設用 money = 1 表示有錢, money = 0表示沒有錢; seat = 1 表示有空座,seat = 0 表示沒有空座
money = 1
seat = 0
if money == 1:
print('土豪,不差錢,順利上車')
if seat == 1:
print('有空座,可以坐下')
else:
print('沒有空座,站等')
else:
print('沒錢,不能上車,追著公交車跑')
應用:猜拳游戲需求分析:
-
參與游戲的角色
- 玩家
- 手動出拳
- 電腦
- 隨機出拳
- 玩家
-
判斷輸贏
- 玩家獲勝
玩家 電腦 石頭 剪刀 剪刀 布 布 石頭 - 平局
- 玩家出拳 和 電腦出拳相同
- 電腦獲勝
隨機做法:
1. 匯出random模塊
2. random.randint(開始,結束)
"""
提示:0-石頭,1-剪刀,2-布
1. 出拳
玩家輸入出拳
電腦隨機出拳
2. 判斷輸贏
玩家獲勝
平局
電腦獲勝
"""
# 匯入random模塊
import random
# 計算電腦出拳的亂數字
computer = random.randint(0, 2)
print(computer)
player = int(input('請出拳:0-石頭,1-剪刀,2-布:'))
# 玩家勝利 p0:c1 或 p1:c2 或 p2:c0
if (player == 0 and computer == 1) or (player == 1 and computer == 2) or (player == 2 and computer == 0):
print('玩家獲勝')
# 平局:玩家 == 電腦
elif player == computer:
print('平局')
else:
print('電腦獲勝')
三目運算子
三目運算子也叫三元運算子,
語法如下:
值1 if 條件 else 值2
快速體驗:
a = 1
b = 2
c = a if a > b else b
print(c)
小結
- if陳述句語法
if 條件:
條件成立執行的代碼
- if…else…
if 條件:
條件成立執行的代碼
else:
條件不成立執行的代碼
- 多重判斷
if 條件1:
條件1成立執行的代碼
elif 條件2:
條件2成立執行的代碼
else:
以上條件都不成立執行的代碼
- if嵌套
if 條件1:
條件1成立執行的代碼
if 條件2:
條件2成立執行的代碼
....
回圈
回圈簡介
回圈的作用
思考:假如我有個女朋友,有一天我們鬧矛盾生氣了,女朋友說:道歉,說100遍“媳婦兒,我錯了”,這個時候程式員會怎么做?
答:100遍
print('媳婦兒,我錯了')
思考:復制粘貼100次嗎?
答:重復執行100次一樣的代碼,程式中回圈即可
回圈的作用:讓代碼更高效的重復執行,
回圈的分類
在Python中,回圈分為while和for兩種,最終實作效果相同,
while的語法
while 條件:
條件成立重復執行的代碼1
條件成立重復執行的代碼2
......
快速體驗
需求:復現重復執行100次print('媳婦兒,我錯了')(輸出更簡潔一些,我們這里設定5次),
分析:初始值是0次,終點是5次,重復做的事情輸出“媳婦兒, 我錯了”,
# 回圈的計數器
i = 0
while i < 5:
print('媳婦兒,我錯了')
i += 1
print('任務結束')
while的應用
應用一:計算1-100累加和
分析:1-100的累加和,即1 + 2 + 3 + 4 +….,即前兩個數字的相加結果 + 下一個數字( 前一個數字 + 1),
i = 1
result = 0
while i <= 100:
result += i
i += 1
# 輸出5050
print(result)
注意:為了驗證程式的準確性,可以先改小數值,驗證結果正確后,再改成1-100做累加,
應用二:計算1-100偶數累加和
分析:1-100的偶數和,即 2 + 4 + 6 + 8…,得到偶數的方法如下:
- 偶數即是和2取余結果為0的數字,可以加入條件陳述句判斷是否為偶數,為偶數則累加
- 初始值為0 / 2 , 計數器每次累加2
方法一:條件判斷和2取余數則累加
# 方法一:條件判斷和2取余數為0則累加計算
i = 1
result = 0
while i <= 100:
if i % 2 == 0:
result += i
i += 1
# 輸出2550
print(result)
方法二:計數器控制
# 方法二:計數器控制增量為2
i = 0
result = 0
while i <= 100:
result += i
i += 2
# 輸出2550
print(result)
break和continue
break和continue是回圈中滿足一定條件退出回圈的兩種不同方式,
理解
舉例:一共吃5個蘋果,吃完第一個,吃第二個…,這里"吃蘋果"的動作是不是重復執行?
情況一:如果吃的程序中,吃完第三個吃飽了,則不需要再吃第4個和第五個蘋果,即是吃蘋果的動作停止,這里就是break控制回圈流程,即終止此回圈,
情況二:如果吃的程序中,吃到第三個吃出一個大蟲子…,是不是這個蘋果就不吃了,開始吃第四個蘋果,這里就是continue控制回圈流程,即退出當前一次回圈繼而執行下一次回圈代碼,
情況一:break
i = 1
while i <= 5:
if i == 4:
print(f'吃飽了不吃了')
break
print(f'吃了第{i}個蘋果')
i += 1
執行結果:

情況二:continue
i = 1
while i <= 5:
if i == 3:
print(f'大蟲子,第{i}個不吃了')
# 在continue之前一定要修改計數器,否則會陷入死回圈
i += 1
continue
print(f'吃了第{i}個蘋果')
i += 1
執行結果:

while回圈嵌套
應用場景
故事梗概:有天女朋友又生氣了,懲罰:說3遍“媳婦兒, 我錯了”,這個程式是不是回圈即可?但如果女朋友說:還要刷今天晚飯的碗,這個程式怎么書寫?
while 條件:
print('媳婦兒, 我錯了')
print('刷晚飯的碗')
但如果女朋友還是生氣,把這套懲罰要連續3天都執行,有如何書寫程式?
while 條件:
while 條件:
print('媳婦兒, 我錯了')
print('刷晚飯的碗')
語法
while 條件1:
條件1成立執行的代碼
......
while 條件2:
條件2成立執行的代碼
......
總結:所謂while回圈嵌套,就是一個while里面嵌套一個while的寫法,每個while和之前的基礎語法是相同的,
快速體驗:復現場景
代碼
j = 0
while j < 3:
i = 0
while i < 3:
print('媳婦兒,我錯了')
i += 1
print('刷晚飯的碗')
print('一套懲罰結束----------------')
j += 1
執行結果

理解執行流程
當內部回圈執行完成之后,再執行下一次外部回圈的條件判斷,

while回圈嵌套應用
應用一:列印星號(正方形)
需求
*****
*****
*****
*****
*****
代碼
分析:一行輸出5個星號,重復列印5行
# 重復列印5行星星
j = 0
while j <= 4:
# 一行星星的列印
i = 0
while i <= 4:
# 一行內的星星不能換行,取消print默認結束符\n
print('*', end='')
i += 1
# 每行結束要換行,這里借助一個空的print,利用print默認結束符換行
print()
j += 1
應用二:列印星號(三角形)
需求
*
**
***
****
*****
代碼
分析:一行輸出星星的個數和行號是相等的,每行:重復列印行號數字個星號,將列印行星號的命令重復執行5次實作列印5行,
# 重復列印5行星星
# j表示行號
j = 0
while j <= 4:
# 一行星星的列印
i = 0
# i表示每行里面星星的個數,這個數字要和行號相等所以i要和j聯動
while i <= j:
print('*', end='')
i += 1
print()
j += 1
九九乘法表
執行結果

6.3.2 代碼
# 重復列印9行運算式
j = 1
while j <= 9:
# 列印一行里面的運算式 a * b = a*b
i = 1
while i <= j:
print(f'{i}*{j}={j*i}', end='\t')
i += 1
print()
j += 1
for回圈
語法
for 臨時變數 in 序列:
重復執行的代碼1
重復執行的代碼2
......
快速體驗
str1 = 'itheima'
for i in str1:
print(i)
執行結果:

break
str1 = 'itheima'
for i in str1:
if i == 'e':
print('遇到e不列印')
break
print(i)
執行結果:

continue
str1 = 'itheima'
for i in str1:
if i == 'e':
print('遇到e不列印')
continue
print(i)
執行結果:

else
回圈可以和else配合使用,else下方縮進的代碼指的是當回圈正常結束之后要執行的代碼,
while…else
需求:女朋友生氣了,要懲罰:連續說5遍“媳婦兒,我錯了”,如果道歉正常完畢女朋友就原諒我了,這個程式怎么寫?
i = 1
while i <= 5:
print('媳婦兒,我錯了')
i += 1
print('媳婦兒原諒我了...')
思考: 這個print是不是沒有回圈也能執行?
語法
while 條件:
條件成立重復執行的代碼
else:
回圈正常結束之后要執行的代碼
示例
i = 1
while i <= 5:
print('媳婦兒,我錯了')
i += 1
else:
print('媳婦原諒我了,真開心,哈哈哈哈')

退出回圈的方式
需求:女朋友生氣,要求道歉5遍:媳婦兒,我錯了,道歉到第三遍的時候,媳婦埋怨這一遍說的不真誠,是不是就是要退出回圈了?這個退出有兩種可能性:
- 更生氣,不打算原諒,也不需要道歉了,程式如何書寫?
- 只一遍不真誠,可以忍受,繼續下一遍道歉,程式如何書寫?
- break
i = 1
while i <= 5:
if i == 3:
print('這遍說的不真誠')
break
print('媳婦兒,我錯了')
i += 1
else:
print('媳婦原諒我了,真開心,哈哈哈哈')

所謂else指的是回圈正常結束之后要執行的代碼,即如果是break終止回圈的情況,else下方縮進的代碼將不執行,
- continue
i = 1
while i <= 5:
if i == 3:
print('這遍說的不真誠')
i += 1
continue
print('媳婦兒,我錯了')
i += 1
else:
print('媳婦原諒我了,真開心,哈哈哈哈')

因為continue是退出當前一次回圈,繼續下一次回圈,所以該回圈在continue控制下是可以正常結束的,當回圈結束后,則執行了else縮進的代碼,
8.2 for…else
語法
for 臨時變數 in 序列:
重復執行的代碼
...
else:
回圈正常結束之后要執行的代碼
所謂else指的是回圈正常結束之后要執行的代碼,即如果是break終止回圈的情況,else下方縮進的代碼將不執行,
示例
str1 = 'itheima'
for i in str1:
print(i)
else:
print('回圈正常結束之后執行的代碼')
退出回圈的方式
- break終止回圈
str1 = 'itheima'
for i in str1:
if i == 'e':
print('遇到e不列印')
break
print(i)
else:
print('回圈正常結束之后執行的代碼')
執行結果:

沒有執行else縮進的代碼,
- continue控制回圈
str1 = 'itheima'
for i in str1:
if i == 'e':
print('遇到e不列印')
continue
print(i)
else:
print('回圈正常結束之后執行的代碼')
執行結果:

因為continue是退出當前一次回圈,繼續下一次回圈,所以該回圈在continue控制下是可以正常結束的,當回圈結束后,則執行了else縮進的代碼,
小結
- 回圈的作用:控制代碼重復執行
- while語法
while 條件:
條件成立重復執行的代碼1
條件成立重復執行的代碼2
......
- while回圈嵌套語法
while 條件1:
條件1成立執行的代碼
......
while 條件2:
條件2成立執行的代碼
......
- for回圈語法
for 臨時變數 in 序列:
重復執行的代碼1
重復執行的代碼2
......
- break退出整個回圈
- continue退出本次回圈,繼續執行下一次重復執行的代碼
- else
- while和for都可以配合else使用
- else下方縮進的代碼含義:當回圈正常結束后執行的代碼
- break終止回圈不會執行else下方縮進的代碼
- continue退出回圈的方式執行else下方縮進的代碼
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/279815.html
標籤:python
