1. 程式人生 > >Python開發【第六篇】:Python基礎條件和循環

Python開發【第六篇】:Python基礎條件和循環

ora back strong als 重復執行 操作 enume 條件表達式 服務

目錄

一、if語句

1、功能

2、語法

單分支,單重條件判斷

多分支,多重條件判斷

if + else

多分支if + elif + else

語句小結 + 案例

三元表達式

二、while語句

1、功能

2、語法

基本語法

計數循環

無限循環

while與break,continue,else連用

while語句小結 + 案例

三、for語句

1、功能

2、語法

基本語法

遍歷序列類型

遍歷可叠代對象或叠代器

for基於range()實現計數循環

for與break,continue,else

for語句小結 + 案例

四、練習

一、if語句

  1、功能

    計算機又被稱作電腦,意思指計算機可以像人腦一樣,根據周圍環境條件(即expession 表達手法)的變化做出不同的反應(即執行代碼)

    if語句就是來控制計算機實現這一功能

  2、語法

    單分支,多重條件判斷

if expression:

    expr_true_suite

註釋:expession為真執行代碼expr_true_suite

    多分支,多重條件判斷

if not  active or over_time >= 10:

    print(‘Warning:service is dead‘)

    warn_tag+=1

    if + else

if expression:

    expr_true_suite   

else:

    expr_false_suite

    多分支if + elif + else

if expession1:

    expr1_true_suite

elif expression2:

    expr2_true_suite

elif expession3:

    expr3_true_suite

else:

    none_of_the_above_suite

     if語句小結 + 案例

      1、if後表達式返回值為True執行其子代碼塊,然後此if語句到此終止,否則進入下一分支判斷,直到滿足其中一個分支,執行後終止if

      2、expression可以引入運算符:not,and,or,is,is ont

      3、多重expression為加強可讀性最好用括號包含

      4、if與else縮進級別一致表示一對

      5、elif與else都是可多選的

      6、一個if判斷最多只有一個else但是可以有多個elif

      7、else代表if判斷if判斷的終結

      8、expession可以是返回值為布爾值的表示式(例如:x > 1,x is not None)的形式,也可以是單個標準對象(例如:x = 1;if x :print(‘ok‘))

      9、所有標準對象均可用布爾值測試,同類型的對象之間可以比較大小。每個對象天生具有布爾 True 或False 值。空對象、值為零的任何數字或者Null對象None的布爾值都是False

      下面對象的布爾值是False

      None、False(布爾類型)、所有的值為零的數、0(整數)、0.0+0.0j(復數)、""(空字符串)、[](空列表)、()(空元組)、{}(空字典)

    案例:

技術分享
#!/usr/bin/env python
#_*_coding:utf-8_*_

‘‘‘
提示輸入用戶名和密碼

驗證用戶名和密碼
     如果錯誤,則輸出用戶名或密碼錯誤
     如果成功,則輸出 歡迎,XXX!
‘‘‘

import getpass

name=input(用戶名: )
passwd=getpass.getpass(密碼: )

if name == alex and passwd == 123:
    print(土豪裏邊請)
else:
    print(土鱉請走開)
用戶登陸驗證 技術分享
#!/usr/bin/env python
#_*_coding:utf-8_*_

‘‘‘
 根據用戶輸入內容打印其權限

 alex --> 超級管理員
 eric --> 普通管理員
 tony,rain --> 業務主管
 其他 --> 普通用戶
‘‘‘
name = input(請輸入用戶名:)


if name == "alex":
    print("超級管理員")
elif name == "eric":
    print("普通管理員")
elif name == "tony" or name == "rain":
    print("業務主管")
else:
    print("普通用戶")
根據用戶輸入內存輸出權限

    三元表達式:

      語法:expr_true_suite if expession else expr_false_suite

      案例:

>>> active=1
>>> print(‘service is active‘) if active else print(‘service is inactive‘)
service is active

      案例:

>>> x=1
>>> y=2
>>> smaller=x if x < y else y
>>> smaller
1

二、while語句

  功能

  while循環的本質就是讓計算機在滿足某一種條件的前提下去重復做同一件事情(即while循環為條件循環,包括:1、條件計數循環,2、條件無限循環)

  這一條件指:條件表達式

  同一件事指:while循環體包含的代碼塊

  重復的事情例如:從1加到10000,求1-10000內所有的奇數,服務等待鏈接

  語法

    基本語法

while expression:

    suite_to_repeat

註解:重復執行suite_to_repeat,直到expression不再為真

    循環計數

count=0
while (count < 9):
    print(‘the loop is %s‘ %count)
    count+=1 

    無限循環

count=0
while True:
    print(‘the loop is %s‘ %count)
    count+=1
---------------------------------------
tag=True
count=0
while tag:
    if count == 9:
        tag=False
    print(‘the loop is %s‘ %count)
    count+=1 

    while與break,continue,else連用

技術分享
count=0
while (count < 9):
    count+=1
    if count == 3:
        print(跳出本層循環,即徹底終結這一個/層while循環)
        break
    print(the loop is %s %count)
break跳出本層循環     技術分享
count=0
while (count < 9):
    count+=1
    if count == 3:
        print(跳出本次循環,即這一次循環continue之後的代碼不再執行,進入下一次循環)
        continue
    print(the loop is %s %count)
continue跳出本次循環 技術分享
count=0
while (count < 9):
    count+=1
    if count == 3:
        print(跳出本次循環,即這一次循環continue之後的代碼不再執行,進入下一次循環)
        continue
    print(the loop is %s %count)
else:
    print(循環不被break打斷,即正常結束,就會執行else後代碼塊)




count=0
while (count < 9):
    count+=1
    if count == 3:
        print(跳出本次循環,即這一次循環continue之後的代碼不再執行,進入下一次循環)
        break
    print(the loop is %s %count)
else:
    print(循環被break打斷,即非正常結束,就不會執行else後代碼塊)
else在循環完成後執行,break會跳過else

    while語句小結 + 案例

      1、條件為真就重復執行代碼,直到條件不在為真,而if是條件為真,只執行一次代碼就結束了

      2、while有計數循環和無限循環兩種,無限循環可以用於某一服務的主要程序一直處於等待被鏈接的狀態

      3、break代表跳出本層循環,continue代表跳出本次循環

      4、while循環在沒有被break打斷的情況下結束,會執行else後代碼

    案例:

技術分享
while True:
        handle, indata = wait_for_client_connect()
        outdata = process_request(indata)
        ack_result_to_client(handle, outdata)
服務等待鏈接 技術分享
import getpass

account_dict={alex:123,eric:456,rain:789}
count = 0
while count < 3:
    name=input(用戶名: ).strip()
    passwd=getpass.getpass(密碼: )
    if name in account_dict:
        real_pass=account_dict.get(name)
        if passwd == real_pass:
            print(登陸成功)
            break
        else:
            print(密碼輸入錯誤)
            count+=1
            continue
    else:
        print(用戶不存在)
        count+=1
        continue
else:
    print(嘗試次數達到3次,請稍後重試)
用戶登陸驗證

三、for語句

    功能

      基本語法

for iter_var in iterable:

    suite_to_repeat

註解:每次循環, iter_var 叠代變量被設置為可叠代對象(序列, 叠代器, 或者是其他支持叠代的對 象)的當前元素, 提供給 suite_to_repeat 語句塊使用.

    遍歷序列類型

name_list=[‘alex‘,‘eric‘,‘rain‘,‘xxx‘]

#通過序列項叠代
for i in name_list:
    print(i)

#通過序列索引叠代
for i in range(len(name_list)):
    print(‘index is %s,name is %s‘ %(i,name_list[i]))

#基於enumerate的項和索引
for i,name in enumerate(name_list,2):
    print(‘index is %s,name is %s‘ %(i,name)) 

    遍歷可叠代對象或叠代器

      叠代對象:就是一個具有next()方法的對象,obj.next()每執行一次,返回一行內容所有內容叠代完後

      叠代器引發一個StopIteration異常告訴程序循環結束,for語句在內部調用next()並捕獲異常

      for循環遍歷叠代器或可叠代對象與遍歷序列的方法並無二致,只是在內部做了調用叠代器next(),並捕獲異常,終止循環操作

      很多時候你根本無法區分for循環的是序列對象還是叠代器

>>> f=open(‘a.txt‘,‘r‘)

for i in f:
    print(i.strip())
hello
everyone

    for基於range()實現計數循環

     range()語法:

     range(start,end,step=1):過顧頭不顧尾

      1、range(10):默認step=1,start=0,生成可叠代對象,包含[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

      2、range(1,10):指定start=1,end=10,默認step=1,生成可叠代對象,包含[1, 2, 3, 4, 5, 6, 7, 8, 9]

      3、range(1,10,2):指定start=1,end=10,step=2,生成可叠代對象,包含[1, 3, 5, 7, 9]  

>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for i in range(10):
    print(i)
0
1
2
3
4
5
6
7
8
9

註釋:for基於range()實現計數循環,range()生成可叠代對象,說明for循環本質還是一種叠代循環

    for與break,continue,else

    與while相同

    for語句小結 + 案例

      1、for循環為叠代循環

      2、可遍歷序列成員(字符串、列表、元組)

      3、可遍歷任何可叠代對象(字典、文件等)

      4、可以使用在列表解析和生成器表達式中

      5、break,continue,else在for中用法與while中一致

    案例:

albums = (‘Poe‘, ‘Gaudi‘, ‘Freud‘, ‘Poe2‘)
years = (1976, 1987, 1990, 2003)

#sorted:排序
for album in sorted(albums):
    print(album)

#reversed:翻轉
for album in reversed(albums):
    print(album)

#enumerate:返回項和
for i in enumerate(albums):
    print(i)
#zip:組合
for i in zip(albums,years):
    print(i)

四、練習

  鏈接:http://www.cnblogs.com/Jiayongxu/p/6984904.html

一、元素分類

有如下值集合 [11,22,33,44,55,66,77,88,99,90...],將所有大於 66 的值保存至字典的第一個key中,將小於 66 的值保存至第二個key的值中。
即: {‘k1‘: 大於66的所有值, ‘k2‘: 小於66的所有值}

二、查找
查找列表中元素,移除每個元素的空格,並查找以 a或A開頭 並且以 c 結尾的所有元素。
    li = ["alec", " aric", "Alex", "Tony", "rain"]
    tu = ("alec", " aric", "Alex", "Tony", "rain") 
    dic = {‘k1‘: "alex", ‘k2‘: ‘ aric‘,  "k3": "Alex", "k4": "Tony"}
 
三、輸出商品列表,用戶輸入序號,顯示用戶選中的商品
    商品 li = ["手機", "電腦", ‘鼠標墊‘, ‘遊艇‘]
 
四、購物車
功能要求:

要求用戶輸入總資產,例如:2000
顯示商品列表,讓用戶根據序號選擇商品,加入購物車
購買,如果商品總額大於總資產,提示賬戶余額不足,否則,購買成功。
附加:可充值、某商品移除購物車
goods = [
    {"name": "電腦", "price": 1999},
    {"name": "鼠標", "price": 10},
    {"name": "遊艇", "price": 20},
    {"name": "美女", "price": 998},
]
 五、用戶交互,顯示省市縣三級聯動的選擇

Python開發【第六篇】:Python基礎條件和循環