day4 - 分支和循環(huán)

python代碼默認情況下是從第一行開始從上往下依次執(zhí)行的关拒,每一條語句都會執(zhí)行

分支結(jié)構(gòu):某段代碼是否執(zhí)行看條件(if語句)

1. if結(jié)構(gòu)(縮進為4個空格或者tab鍵)- 滿足條件就執(zhí)行某個操作圆凰,不滿足就不執(zhí)行

  • 1)語法:
if 條件語句:
    代碼段
其他代碼
  • 2)說明
    - if - 關(guān)鍵字,固定寫法
    - 條件語句 - 任何有結(jié)果的表達式都可以躁愿,例如:數(shù)據(jù),已經(jīng)聲明過的變量缤沦、運算表達式(不能是賦值語句)等等
    - : - 固定寫法胃碾;(一般出現(xiàn):的位置,后面都會換行產(chǎn)生縮進)
    - 代碼段 - 和if保持一個縮進的一條或者多條語句脐帝;需要滿足條件才執(zhí)行的代碼

  • 3)執(zhí)行過程
    先判斷條件語句的結(jié)果是否為True(如果條件語句的結(jié)果不是布爾值同云,就先轉(zhuǎn)換成布爾再看);
    如果為True堵腹,就執(zhí)行if語句里的代碼段炸站,否則代碼段不執(zhí)行

num = 10
if num & 1 == 0:
    print('偶數(shù)')
print('你好')

2.if - else 結(jié)構(gòu) - 滿足條件執(zhí)行某個操作,不滿足條件的時候執(zhí)行另外一個操作

  • 1)語法
if 條件語句:
    代碼段1(滿足條件要執(zhí)行的代碼)
else:
    代碼段2(不滿足條件要執(zhí)行的代碼)
  • 2)執(zhí)行過程:
    先判斷條件語句是否為True疚顷,如果為True就執(zhí)行代碼段1旱易,否則執(zhí)行代碼段2
age = 20
# 根據(jù)年齡值的范圍打印“成年”或者“未成年”
if age >= 18:
    print('成年')
else:
    print('未成年')
                          立ち入り禁止

1. if - elif - else結(jié)構(gòu)

  • 1)語法:
if 條件語句1:
    代碼段1
elif 條件語句2:
    代碼段2
elif 條件語句3:
    代碼段3
……
else:
    代碼段N
其他語句
  • 2)執(zhí)行過程:
    - 先判斷條件語句1是否為True,為True就執(zhí)行代碼段1腿堤,然后整個if-elif-else結(jié)構(gòu)結(jié)束阀坏;
    - if為False,就判斷條件語句2是否為True笆檀,為True就執(zhí)行代碼段2忌堂,然后整個if-elif-else結(jié)構(gòu)結(jié)束;
    - if為False酗洒,就判斷條件語句3是否為True士修,為True就執(zhí)行代碼段3妄迁,然后整個if-elif-else結(jié)構(gòu)結(jié)束;
    以此類推
    - 如果所有的條件語句都不成了李命,執(zhí)行else后面的代碼段
# 根據(jù)年齡范圍打印:少年(14以下)箫老、青年(14-25)封字、壯年(26-35)、中年(36-50)耍鬓、老年(50以上)
age = 30
if age < 14:
     print('少年')
if 14 <= age <= 25:
     print('青年')
if 25 < age <= 35:
     print('壯年')
if 35 < age <= 50:
     print('中年')
if age > 50:
     print('老年')

age = int(input('請輸入你的年齡:'))
if age < 14:
    print('少年')
elif age <= 25:
    print('青年')
elif age <= 35:
    print('壯年')
elif age <= 50:
    print('中年')
else:
    print('老年')

2. if嵌套

if結(jié)構(gòu)中的代碼塊中可以再出現(xiàn)其他的if語句
# 判斷一個數(shù)是否是偶阔籽,并且再判斷這個數(shù)是否是4的倍數(shù),并打印出結(jié)論
# 方法一:
num = 9
if num & 1 == 0:
    print('偶數(shù)')
else:
    print('奇數(shù)')

if num % 4 ==0:
    print('是4的倍數(shù)牲蜀!')

# 方法二:
if num & 1 == 0:
    print('偶數(shù)')
    if num % 4 == 0:
        print('是4的倍數(shù)')
else:
    print('奇數(shù)')
    if num % 10 == 3:
        print('個位數(shù)是3')
                          立ち入り禁止

循環(huán)結(jié)構(gòu):for循環(huán)和while循環(huán)

1.for循環(huán)

  • 1)語法:
for 變量 in 序列:
    循環(huán)體
  • 2)說明:
    - for - 關(guān)鍵字笆制,固定寫法
    - 變量名 - 和聲明變量的時候的要求一樣
    - in - 關(guān)鍵字,固定寫法
    - 序列 - 容器型數(shù)據(jù)涣达;字符串在辆、列表、字典度苔、元組匆篓、集合、迭代器寇窑、生成器鸦概、range
    - : - 固定寫法
    - 循環(huán)體 - 和for保持一個縮進的一條或者多條語句;需要重復執(zhí)行的語句

  • 3)執(zhí)行過程:
    讓變量去序列中取值甩骏,一個一個的取窗市,取完為止,每取一個值會執(zhí)行一次循環(huán)體饮笛。
    (for循環(huán)可以通過控制序列中元素的個數(shù)來控制循環(huán)的次數(shù))

for x in 'abc12':
    print('x=:', x)
    print('+++++')

"""
x = 'a'; print('x=:', x); print('+++++')
x = 'b'; print('x=:', x); print('+++++')
x = 'c'; print('x=:', x); print('+++++')
x = '1'; print('x=:', x); print('+++++')
x = '2'; print('x=:', x); print('+++++')
"""

2.range函數(shù) - 為了讓for循環(huán)更加方便的控制次數(shù)

  • 1)range(N) - 產(chǎn)生0~N-1的數(shù)字序列
    例如:range(4) -> 0,1,2,3
  • 2)range(M, N) - 產(chǎn)生M~N-1的數(shù)字序列
    例如:range(3咨察, 10) -> 3,4,5,6,7,8,9
  • 3)range(M, N, step) - 從M開始,每隔step的值產(chǎn)生下一個數(shù)字缎浇,到N前的一個數(shù)為止
    例如:range(0, 10, 2) -> 0,2,4,6,8

作用:1.產(chǎn)生指定的數(shù)字序列 2.控制循環(huán)次數(shù)

for x in range(4):
    print(x)

for x in range(3, 10):
    print(x)

for x in range(0, 10, 2):
    print(x)
    
# 注意:如果for循環(huán)中變量取出來的值在循環(huán)體中無用扎拣,這個變量可以直接用_來命名
for _ in range(100):
    print('+++++')
    
# 練習:打印0~100中,所有能被3整除的數(shù)
"""
# 方法一
for x in range(101):
     if x % 3 == 0:
         print(x)

# 方法二
 for x in range(0, 101, 3):
     print(x)

# 練習2:統(tǒng)計1~100中能被4整除并且個位數(shù)是2的數(shù)字的個數(shù)
count = 0
for x in range(0, 101, 4):
    if x % 10 == 2:
        # print(x)
        count += 1
print('個數(shù):', count)

# 練習3: 計算1+2+3+……+100
sum1 = 0    # 保存所有的和

for x in range(1, 101):
    sum1 += x
print('和:', sum1)
                          立ち入り禁止

1.while循環(huán)

  • 1)語法:
while 條件語句:
    循環(huán)體
  • 2)說明
    - while - 關(guān)鍵字素跺;固定寫法
    - 條件語句 - 任何有結(jié)果的表達式二蓝;數(shù)據(jù)、已經(jīng)聲明過的變量指厌、運算表達式(賦值語句除外)等
    - : - 固定寫法
    - 循環(huán)體 - 和while保持一個縮進的一條或者多條語句刊愚;(需要重復執(zhí)行的語句)

  • 3)執(zhí)行過程:
    先判斷條件語句是否為True,如果為True就執(zhí)行循環(huán)體踩验;執(zhí)行完循環(huán)體再判斷條件語句是否為True鸥诽,
    為True又執(zhí)行循環(huán)體商玫,以此類推,直到條件語句的結(jié)果是False循環(huán)就結(jié)束

from random import randint
num = 0
while num < 5:
    num += 1
    print('====')

2.for循環(huán)和while循環(huán)的選擇

  • 1)什么時候使用for循環(huán)
    a.循環(huán)次數(shù)確定的時候
    b.遍歷序列

  • 2)什么時候使用while循環(huán)
    a.死循環(huán)
    b.循環(huán)次數(shù)不確定的時候

# 不斷的輸入數(shù)字牡借,直到輸入的數(shù)字是0為止

value = input('請輸入數(shù)字:')
while value != '0':
    value = input('請輸入數(shù)字:')

# 練習:猜數(shù)字游戲
# 游戲開始的時候隨機產(chǎn)生一個100以內(nèi)的數(shù)字拳昌,不斷輸入數(shù)字直到輸入的數(shù)字和產(chǎn)生的數(shù)字一致,游戲結(jié)束
# 在沒有猜對的時候給出‘大了’钠龙,或者‘小了’的提示

x = randint(0, 100) # 產(chǎn)生0到100的隨機數(shù)炬藤,并且保存到x中
value = int(input('請猜數(shù)字:'))
while value != x:
    if value > x:
        print('大了', '請猜數(shù)字')
    elif value < x:
        print('小了', '請猜數(shù)字')
    value = int(input('請猜數(shù)字:'))
print('游戲結(jié)束', x, value)
                          立ち入り禁止

1.continue

continue是循環(huán)體中的關(guān)鍵字
當執(zhí)行循環(huán)體的時候,如果遇到continue碴里,那么當次循環(huán)結(jié)束沈矿,直接進入下次循環(huán)的判斷
 for x in range(4):
     print('====')
     continue
     print('++++')

2.break

break是循環(huán)體中的關(guān)鍵字
當執(zhí)行循環(huán)體的時候,如果遇到break咬腋,那么整個循環(huán)直接結(jié)束
# 功能:不斷輸入數(shù)字直到輸入的數(shù)字是0為止羹膳,然后再求輸入的所有的奇數(shù)的和
sum1 = 0
while True:
    value = int(input('請輸入數(shù)字:'))
    if value == 0:
        break
    if value % 2 == 0:
        continue
    sum1 += value
print(sum1)

3.else

  • 1)完整的for循環(huán)
for 變量 in 序列:
    循環(huán)體
else:
    代碼段
  • 2)完整的while循環(huán)
while 條件語句:
    循環(huán)體
else:
    代碼段

else中的代碼段:當循環(huán)自然死亡(for后的變量數(shù)據(jù)取完了;while后面的條件為False)根竿,
else后面的代碼段會在循環(huán)結(jié)束后執(zhí)行陵像;如果循環(huán)是因為遇到break而結(jié)束的,那么else
后面的代碼段就不會執(zhí)行犀填。

else的意義:可以通過判斷else中的代碼有沒有執(zhí)行來判斷循環(huán)有沒有遇到break蠢壹。


for x in range(4):
    print(x)
else:
    pass

4.while循環(huán)的用法

while True:
    需要重復執(zhí)行的代碼段
    if 退出循環(huán)的條件
        break
                          立ち入り禁止

循環(huán)嵌套:外面的循環(huán)執(zhí)行一次,里面的循環(huán)要執(zhí)行完

for x in range(3):
     for y in range(4):
         print(x, y)

"""
x = 0:
    y = 0: print(0, 0)
    y = 1: print(0, 1)
    y = 2: print(0, 2)
    y = 3: print(0, 3)
x = 1:
    y = 0:print(1, 0)
    依次類推
"""

# 計算 1九巡!+2图贸!+3!+……10冕广!
# N疏日!= 1*2*3*4*……*N
# 方法一:
sum2 = 0
# 將1~10取出來
for x in range(1, 11):
    sum1 = 1
    # 計算取出來的數(shù)的階乘
    for y in range(1, x+1):
        sum1 *= y
        # print(sum1)
    sum2 += sum1
print(sum2)

# 方法二
sum1 = 0
sum2 = 1
for num in range(1, 11):
    sum2 *= num
    sum1 += sum2
print(sum1)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市撒汉,隨后出現(xiàn)的幾起案子沟优,更是在濱河造成了極大的恐慌,老刑警劉巖睬辐,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挠阁,死亡現(xiàn)場離奇詭異,居然都是意外死亡溯饵,警方通過查閱死者的電腦和手機侵俗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丰刊,“玉大人隘谣,你說我怎么就攤上這事∽那桑” “怎么了寻歧?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵掌栅,是天一觀的道長。 經(jīng)常有香客問我码泛,道長猾封,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任噪珊,我火速辦了婚禮忘衍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘卿城。我一直安慰自己,他們只是感情好铅搓,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布瑟押。 她就那樣靜靜地躺著,像睡著了一般星掰。 火紅的嫁衣襯著肌膚如雪多望。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天氢烘,我揣著相機與錄音怀偷,去河邊找鬼。 笑死播玖,一個胖子當著我的面吹牛椎工,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蜀踏,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼维蒙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了果覆?” 一聲冷哼從身側(cè)響起颅痊,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎局待,沒想到半個月后斑响,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡钳榨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年舰罚,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片重绷。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡沸停,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出昭卓,到底是詐尸還是另有隱情愤钾,我是刑警寧澤瘟滨,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站能颁,受9級特大地震影響杂瘸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜伙菊,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一败玉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧镜硕,春花似錦运翼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至财剖,卻和暖如春悠夯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背躺坟。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工沦补, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人咪橙。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓夕膀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親美侦。 傳聞我的和親對象是個殘疾皇子店诗,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345