1. 程式人生 > >第二章 Python基礎知識

第二章 Python基礎知識

固定 list 如何獲取 思路 加減乘除 方法 oat nal 既然

第1章 第一個Pyhton程序

Pyhton的兩種執行方式:交互式與腳本文件

1.1 交互式

l 交互式模式

直接在Windows或者Linux環境下打開Python解釋器執行。

優點:快捷,調試方便。

缺點:不能夠保存代碼。

C:\Users\cc>python3

Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)]

on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> print(‘hello word‘)

hello word

>>>

1.2 腳本文件

l 腳本文件執行

先將執行的內容寫成腳本文件,然後使用Pyhton命令+文件全路徑執行

優點:能夠永久保存代碼。

缺點:調試稍微麻煩一點(可以使用IDE工具)。

C:\Users\cc>python3 D:\helloword.tx

hello word

1.3 腳本文件的執行過程

1、 啟動解釋器。

2、 把文件內容從磁盤中讀到內存中去。

3、 解釋器讀取文件內容,識別內容中的命令後去執行。

1.4 Python文件的後綴名

Python後綴名和執行原理沒有關系,讀取內容(在內存裏 一行行解釋)再執行。

但是最好寫成py告訴人們這是一個py程序。

第2章 變量

2.1 什麽是變量

變量就是變化的量。

變量的作用:用來在程序運行期間存儲各種需要臨時保存不斷變化的數據

2.2 定義變量

### 變量名:相當於門牌號,它的作用是代表(或者引用)某個變量值的名字。

變量名 賦值符號 變量值

name=leo

2.3 變量名的定義規範

  1. 變量名可以是字母、數字和下劃線(_)的組合
  2. 變量名不能以數字開頭
  3. 關鍵字不能聲明為變量名:[‘and‘, ‘as‘, ‘assert‘, ‘break‘, ‘class‘, ‘continue‘, ‘def‘, ‘del‘, ‘elif‘, ‘else‘, ‘except‘, ‘exec‘, ‘finally‘, ‘for‘, ‘from‘, ‘global‘, ‘if‘, ‘import‘, ‘in‘, ‘is‘, ‘lambda‘, ‘not‘, ‘or‘, ‘pass‘, ‘print‘, ‘raise‘, ‘return‘, ‘try‘, ‘while‘, ‘with‘, ‘yield‘]

2.4 變量的命名方式

駝峰體:

UserName=leo

下劃線(推薦):

user_name=leo

2.5 常量

常量:不變的量

USERNAME=leo

Python的常量,只能將變量名都變成大寫,但是這只是一個提示作用,還是可以改的

2.6 變量的修改與內存管理

2.6.1 變量與值與內存地址

當我們寫

name=leo

時,Python解釋器做了2件事:

1、 在內存中創建一個“leo”的字符串

2、 在內存中創建一個名為name的變量,並把它指向“leo”的內存地址。

3、 如果在聲明一個age=28,那麽他們的關系如下圖:

如何獲取變量指向的內存地址:

>>> ame=‘leo‘

>>> age=16

>>> print(id(name),id(age))

666914558728 1773717648

ID看到的只是ID號,並非真正的內存地址,真正的內存地址無法查看。

2.6.2 變量賦值給變量

兩個變量名都分別指向了不同的值和內存地址,如果這個時候我們再聲明一個變量

name2=name

理論上我並不是賦值一個字符串,而是把name的值賦給name2,name2此時也應該被指向‘leo‘,name與name2的內存地址也應該一致。

>>> name=‘leo‘

>>> name2=name

#age=16

>>> print(name,id(name),name2,id(name2))

#再把name重新賦值‘pyhton‘name2還會跟著改變麽?

>>> name=‘python‘

>>> print(name,id(name),name2,id(name2))

leo 628132844296 leo 628132844296

python 628136510160 leo 628132844296

經過測試由此得出以下結論:

1、 變量賦值給變量,就是將兩個變量名賦值給同一個內存地址,獲取同一個值。

2、 在執行name=‘python‘時,解釋器創建了一個新的值python,並把name重新指向給了‘Python’

3、 此時查看兩個變量的內存地址就會發現,name已經重新指向了pyhton的內存地址,而name2還是原來的leo。

它們的關系應該是這樣:

l 結論:

當把一個變量A賦值給一個變量B時,解釋器只是把變量A所指向的內存地址賦值給了變量B,因此變量A和變量B並沒有發生直接的關聯!只不過它們都同時指向了同一個內存地址而已,這也就是為什麽把變量A再指向一個新地址後,而變量B還保持不變的原因。

2.6.3 垃圾回收機制

Python擁有自動回收垃圾的機制,即回收內存空間。沒人用的就是稱為垃圾,如我們現在定義:

>>> age=18

>>> age=19

>>> age2=19

>>> print(id(age),age,id(age2),age2)

1773914352 19 1773914352 19

最後打印的應該是值19的內存地址,說明之前18已經和age變量解除了關系,那麽它去哪了呢?

實際上18對應的內存地址由於沒有人引用了,就會被定期回收,那麽上面的過程就是 age解除了與18的關系,與19建立了關聯關系。

有沒有發現,每次重新運行程序,字符串類型的變量id得到的內存地址都不一樣?

Pyhton垃圾回收的特性:

Python不用自己來清除垃圾,會在程序結束的時候自己解除回收,所以每次執行程序都相當於重新創建了變量和內存地址,不用考慮回收垃圾的問題。

總結:

Pyhton擁有垃圾回收機制;

Python會回收引用計數等於0的內存空間。

Python會在程序結束的時候回收垃圾。

2.7 變量的特征

定義一個變量會有三個特征:id、type、value

id代表變量引用的內存地址id

type代表數據類型

value代表值

>>> name=‘leo‘

>>> age=28

>>> print(id(name),type(name),name)

>>> print(id(age),type(age),age)

167542887176 <class ‘str‘> leo

1773914640 <class ‘int‘> 28

2.8 刪除變量

變量名沒有存儲功能,只是刪除了變量名與值的綁定關聯關系,並不是真的刪除值。

>>> name=‘leo‘

>>> del name

>>> print(name)

第3章 用戶與程序交互

用戶與程序交互的目的:獲取用戶輸入的內容。

### 在python3中的input:無論用輸入何種類型,都會存成字符串類型

>>> name=input(‘please input your name: ‘)

>>> print(id(name),type(name),name)

please input your name: leo

522660184336 <class ‘str‘> leo

### 在python2中

### raw_input與python3的input是一樣的

>>> name=raw_input(‘please input your name: ‘)

>>> print(id(name),type(name),name)

### python2中input,用戶必須輸入值,輸入的值是什麽類型,就存成什麽類型

>>> name=input(‘please input your name: ‘)

>>> print(id(name),type(name),name)

### 文件頭

Python不支持中文的解決方法,在文件頭加入:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

第4章 基本數據類型

4.1 數字

4.1.1 int 整型

用來標識:年紀、身份證號、qq號、等級等數字整數類型

定義:age=28 # age=int(28)

>>> age=18

>>> print(type(age))

<class ‘int‘>

4.1.2 float浮點型

用來標識:工資、身高、體重、帶有小數的浮點類型數字

定義:height=1.86 # height=float(1.86)

>>> height=1.86

>>> print(type(height))

<class ‘float‘>

4.2 字符串

在python中,加了引號的字符就是字符串類型,python並沒有字符類型

用來標識:姓名、性別、國籍、種族等字符數據

定義:name=‘leo‘ # name=str(leo)

>>> name=‘leo‘

>>> print(type(name))

<class ‘str‘>

4.2.1 單引號、雙引號、多引號的區別

### 單引號和雙引號沒有太大區別,只有在配合使用的時候需要註意,如:

msg="i ‘m leo"

### 多引號的作用,多行字符串必須要用多引號,如:

msg = ‘‘‘

天氣預報:

星期一:晴天

星期二:陰天

...

‘‘‘

4.2.2 字符串拼接

要求:

l 只能字符串之間拼接

l 字符串之間只能用+或*

### 相加 ,其實就是簡單拼接

>>> fname=‘leo‘

>>> lname=‘lex‘

>>> print(fname+lname) leolex

leolex

### 註意1:字符串相加的效率不高

字符串1+字符串2,並不會在字符串1的基礎上加字符串2,而是申請一個全新的內存空間存入字符串1和字符串2,相當字符串1與字符串2的空間被復制了一次,

>>> fname=‘leo‘

>>> lname=‘rubin‘

>>> print(fname+‘.‘+lname)

>>> print(fname+‘ ‘+lname)

leo.rubin

leo rubin

### 相乘,x5次輸入

>>> print(fname*5)

leoleoleoleoleo

4.3 列表

在[]內用用逗號分隔開的多個元素,每個元素可以是任意類型

用於標識:存儲多個值的情況,比如一個人的愛好,個人信息等。

定義類型:hobbies=[‘play‘,‘music‘,‘move‘] # hobbies=list([‘play‘,‘music‘,‘move‘])

### 取列表元素使用索引下標,從左向右,從0開始;從右向左,從-1開始

hobbies=list([‘play‘,‘read‘,‘music‘,‘movie‘])hobbies=[‘play‘,‘music‘,‘movie‘]

>>> hobbies=[‘play‘,‘read‘,‘music‘,‘movie‘]

>>> print(type(hobbies))

>>> print(hobbies[3])

>>> print(hobbies[0])

>>> print(hobbies[-1])

<class ‘list‘>

movie

play

movie

4.3.1 列表的嵌套與取值

### 列表中可以嵌套列表,並且可以取值:

>>> info=[110,‘leo‘,28,[‘play‘,‘music‘,‘read‘,‘movie‘]]

>>> print(info[0])

>>> print(info[3][3])

110

movie

### 存放多個學生信息

### 先取第一個學生的所有信息

### 再取第一個學生的第一個愛好

>>> students_info=[[‘leo‘,28,[‘movie‘,‘music‘]],[‘rubin‘,30,[‘play‘,‘read‘]]]

>>> print(students_info[0])

>>> print(students_info[0][2][0])

[‘leo‘, 28, [‘movie‘, ‘music‘]]

movie

4.4 字典

### 為什麽需要字典?字典的作用是什麽

存放一個人的信息:姓名,性別,年齡,很明顯是多個值,既然是存多個值,我們完全可以基於剛剛學習的列表去存放,如下

>>> info=[‘leo‘,28,‘movie‘]

定義列表的目的不單單是為了存,還要考慮取值,如果我想取出這個人的年齡,可以用

>>> info[1]

但這是基於我們已經知道在第2個位置存放的是年齡的前提下,我們才知道索引1對應的是年齡

即:

# name,age,hobbies

info=[‘leo‘,28,‘movie‘]

而這完全只是一種假設,並沒有真正意義上規定第三個位置存放的是年齡,於是我們需要尋求一種,即可以存放多個任意類型的值,又可以硬性規定值的映射關系的類型,比如key=value,這就用到了字典

字典:定義在{}內,用key-value形式表示一個元素,用逗號隔開:

用於標識:存儲多個值的情況,每個值都有唯一一個對應的key,可以更為方便高效的取值:

定義:info={‘name‘:‘leo‘,‘age‘:28,‘hobbies‘:‘movie,game‘}

# info=dcit({‘name‘:‘leo‘,‘age‘:28,‘hobbies‘:‘movie,game‘})

>>> info={‘name‘:‘leo‘,‘age‘:28,‘hobbies‘:‘movie,game‘}

>>> print(info[‘name‘])

>>> print(info[‘age‘])

>>> print(info[‘hobbies‘])

leo

28

movie,game

4.4.1 字典的嵌套與取值

info={
‘name‘:‘leo‘,
‘age‘:‘28‘,
‘hobbies‘:[‘play‘,‘movie‘,‘read‘],
‘company_info‘:{
‘name‘:‘sitech‘,
‘type‘:‘IT‘,
‘emp_num‘:2000
}
}

# 取人員基本信息和第三個愛好
print(info[‘name‘],info[‘age‘],info[‘hobbies‘][2])
# 取公司名稱
print(info[‘company_info‘][‘name‘])

4.4.2 列表裏面嵌套字典

### 列表裏可以放任意類型的元素,可以將人員信息以字典類型模式放入列表中

info=[
{‘name‘:‘leo‘,‘age‘:28,‘hobbies‘:[‘play‘,‘game‘]},
{‘name‘:‘rubin‘,‘age‘:30,‘hobbies‘:[‘read‘,‘music‘]},
{‘name‘:‘lex‘,‘age‘:29,‘hobbies‘:[‘movie‘,‘game‘]},
]

### 取第三個學生的第二個愛好
print(info[2][‘hobbies‘][1])

4.5 布爾

布爾值:True代表真,False代表假

人腦的主要作用是數據運行與邏輯計算,布爾類型就模擬人的邏輯運算,即判斷一個條件成立時,用True標識,不成立則用False標識。

>>> a=5
>>> b=3
>>> print(a > b)
>>> print(a < b)

True

False

可以通過條件結果做不同的事,比如:比較運算或者邏輯運算

#1.可變類型:在id不變的情況下,value可以變,則稱為可變類型,如列表,字典

#2. 不可變類型:value一旦改變,id也改變,則稱為不可變類型(id變,意味著創建了新的內存空間)

第5章 格式化輸出

5.1 占位符

獲取用戶信息,然後打印成固定格式,比如:

請用戶輸入名字和年齡,然後打印如下格式:

My name is XXX, I am XXX

格式化輸出,需要使用到占位符,常見的占位符有:

%d 整數

%s 字符串

%f 浮點數

### 使用%s字符串占位符

>>> name=input(‘Please input your name: ‘)
>>> age=input(‘Please input your age: ‘)
>>> print(‘My name is %s,I am %s‘ %(name,age))

Please input your name: leo

Please input your age: 28

My name is leo,I am 28

### 如果想要使用%d呢?如果直接使用%d這樣是不行的,要註意在接收用戶輸入的age的類型是str,所以需要轉成int類型

print(‘My name is %s,I am %d‘ %(name,age))

name=input(‘Please input your name: ‘)
age=int(input(‘Please input your age: ‘))
print(‘My name is %s,I am %d‘ %(name,age))

5.2 占位符練習

練習:用戶輸入姓名、年齡、工作、愛好 ,然後打印成以下格式

------------ info of Egon -----------

Name : Egon

Age : 22

Sex : male

Job : Teacher

------------- end -----------------

### 思路:

1、 要求用戶輸入,需要用到input方法獲取用戶輸入然後分別存在4個對應變量當中

2、 有數字類型,並沒有要求你是否要使用int

3、 多行模式,可以使用‘‘‘輸出

name=input(‘Please input your name: ‘)
age=input(‘Please input your age: ‘)
sex=input(‘Please input your sex: ‘)
job=input(‘Please input your job: ‘)

print(
‘‘‘
------------ info of Egon -----------
Name : %s
Age : %s
Sex : %s
Job : %s
------------- end -------------------

‘‘‘
%(name,age,sex,job)
)

Please input your name: leo

Please input your age: 29

Please input your sex: male

Please input your job: IT

------------ info of Egon -----------

Name : leo

Age : 29

Sex : male

Job : IT

------------- end -------------------

第6章 基本運算符

計算機可以進行的運算有很多種,可不只加減乘除這麽簡單。

運算按種類可以分成:

l 算數運算

l 比較運算

l 邏輯運算

l 賦值運算

l 身份運算

l 位運算

6.1 算數運算

假設:a=10,b=5

算數運算

運算符

描述

實例

+

加 - 兩個對象相加

a + b =15

-

減 - 得到負數或是一個數減去另一個數

a - b =5

*

乘 - 兩個數相乘或是返回一個被重復若幹次的字符串

a * b =50

/

除 - a 除以 b

a / b =2

%

取模 - 返回除法的余數

a % b =0
15 % 6 =3

**

冪 - 返回a的b次冪,就是返回多少次方

10的5次方=100000

//

取整除 - 返回a以b的商的整數部分

a // b =2
9 // 2 =4
8.0 // 4.0 =2.0

6.2 比較運算

假設:a=10,b=5

比較運算

運算符

描述

實例

==

等於 - 比較兩個對象是否相等

a == b False

!=

不相等 - 比較兩個對象是否不相等

a != b True

<>

不相等 - 比較兩個對象是否不相等

a <> b True

>

大於

a > b True

<

小於,所有比較運算符返回1表示真,返回0表示假。

a < b False

>=

大於等於

a >= b True

<=

小於等於

a <= b False

6.3 賦值運算

假設:a=10,b=5

賦值運算

運算符

描述

實例

=

賦值運算符,將右邊的值賦值給左邊的變量名

c=a+b 將a+b的運算結果賦值給c

+=

自加賦值,將+=號左邊的值與+=右邊的值相加

c += a 相當於c=c+a

-=

自減賦值

c -= a 相當於c=c-a

*=

自乘賦值

c *= a 相當於 c = c * a

/=

自除賦值

c /= a 相當於 c = c / a

%=

自取模賦值

c %= a 相當於 c = c % a

**=

自求冪賦值

c **= a 相當於 c = c ** a

//=

自取整賦值

c //= a 相當於 c = c // a

>>>height=186
>>>height+=1 #height=height+1
>>>print(height)

187

6.4 邏輯運算

邏輯運算

運算符

描述

實例

and

布爾“與”,並集,兩個條件都為真則為真

a and b

or

布爾“或”,交集,兩個條件有一個為真,則為真

a or b

not

非,與條件相反則威震

not (a and b)

name=‘leo‘
age=28

print(name == ‘leo‘ and age == 28) True
print(name == ‘leo‘ and age == 8) False

print(name == ‘leo‘ or age == 28) True
print(name == ‘lex‘ or age == 8) False

print(not(age==28)) False
print( not(name == ‘leo‘) and age == 28) False

6.5 身份運算

# ==等號比較的是value

# is比較的是id

x=‘leo0329‘
y=‘leo0329‘
print(id(x))
print(id(y))
print(x==y)
print(x is y)

1069503381776

1069503381776

True

True

第7章 流程控制 if...else

條件判斷使用if...else

7.1 基本語法

如果條件(在if和冒號之間的表達式)判定為真,那下面的語句塊就會被執行,如果位假,語句塊就不會被執行。

if (條件):

執行

1、如果年級大於30,那麽叫“阿姨”

age=int(input("please input your age: "))
if age > 30:
print("阿姨好")

please input your age: 31

阿姨好

2 如果:女人的年齡>30歲,那麽:叫阿姨,否則:叫小姐,否則使用else。

age=int(input("please input your age: "))
if age > 30:
print("阿姨好")
else:
print("小姐姐")

please input your age: 28

小姐姐

3 如果:女人的年齡>=18並且<22歲並且身高>170並且體重<100並且是漂亮的,那麽:表白,否則:叫阿姨

思考:

首先要先確定有幾個變量:ageheightweightis_pretty

然後條件是 age >= 18 and <22、hetght>170、weight<100、is_pretty=True

age=20
height=171
weight=99
is_pretty=True

if
age >= 18 and age < 22 and height > 170 and weight < 100 and is_pretty == True:
print("表白")
else:
print("阿姨好")

age=int(input(‘age>>>: ‘))
is_pretty=str(input(‘is_pretty: ‘))
if age >= 18 and age < 22 and is_pretty == ‘True‘:
print("表白成功")
else:
print("阿姨好")

7.2 用bool來判斷用戶是否輸入

x = input(‘Please enter a number :‘)

7.3 if嵌套if

#在表白的基礎上繼續:

#如果表白成功,那麽:在一起

#否則:打印 "去你媽的愛情"

age=20
height=171
weight=10000
is_pretty=True
success=True

if
age >= 18 and age < 22 and height > 170 and weight < 100 and is_pretty == True:
if success == True:
print("表白成功")
else:
print("去你媽的愛情")
else:
print("阿姨好")

7.4 if...elif...elis嵌套

如果:成績>=90,那麽:優秀
如果成績>=80且<90,那麽:良好
如果成績>=70且<80,那麽:普通
其他情況:很差

count=int(input(‘count>>>: ‘))
if count >= 90:
print(優秀‘)
elif count >=80:
print(良好‘)
elif count >=70:
print(普通‘)
else:
print(很差‘)

語法:

if 條件1:

    縮進的代碼塊

  elif 條件2:

    縮進的代碼塊

  elif 條件3:

    縮進的代碼塊

  ......

  else:  

    縮進的代碼塊

7.5 練習

練習1:用戶登錄驗證

### 請用戶輸入用戶名和密碼,如果用戶名是leo,密碼是123就通過,否則報錯用戶密碼錯誤。

user_name=input(‘username>>>: ‘)
user_pass=input(‘password>>>: ‘)

if user_name == ‘leo‘ and user_pass == ‘123‘:
print(‘login success‘)
else:
print(用戶名或密碼錯誤‘)

練習2:根據用戶輸入內容打印其權限

‘‘‘

egon --> 超級管理員

tom --> 普通管理員

jack,rain --> 業務主管

其他 --> 普通用戶

‘‘‘

user_name=input(‘username>>>: ‘)
if user_name == ‘leo‘:
print(您好,超級管理員‘)
elif user_name == ‘tom‘:
print(您好,普通管理員‘)
elif user_name == ‘jack‘ or user_name == ‘rain‘:
print(您好,業務主管‘)
else:
print(普通用戶‘)

練習3:根據今天是周幾,選擇相應輸出

# 如果:今天是Monday,那麽:上班

# 如果:今天是Tuesday,那麽:上班

# 如果:今天是Wednesday,那麽:上班

# 如果:今天是Thursday,那麽:上班

# 如果:今天是Friday,那麽:上班

# 如果:今天是Saturday,那麽:出去浪

# 如果:今天是Sunday,那麽:出去浪

today=input(‘today>>>: ‘)
if today == ‘Saturday‘ or today == ‘Sunday‘ :
print(‘出去浪‘)
elif today == ‘Monday‘ or today == ‘Tuesday‘ or today == ‘Wednesday‘ or today == ‘Thursday‘ or today == ‘Friday‘ :
print(‘上班‘)
else:
print(‘‘‘您只能輸入其中一種:
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
‘‘‘)

7.6 in和列表的使用

### in可以象其他運算符一樣在條件語句中使用。

### 可以檢查一個值是否在列表中。

today=input(‘today>>>: ‘)
if today in [‘Saturday‘,‘Sunday‘]:
print(‘出去浪‘)
elif today in [‘Monday‘,‘Tuesday‘,‘Wednesday‘,‘Thursday‘,‘Friday‘] :
print(‘上班‘)
else:
print(‘‘‘您只能輸入其中一種:
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
‘‘‘)

第8章 流程控制 while 循環

8.1 為何使用循環

### 先完成一個猜年齡的小程序,設leo的年級是 28

leo_age = 28
guess = int(input(‘guess>>>: ‘))
if guess > 28:
print(猜大了‘)
elif guess < 28:
print(猜小了‘)
else:
print(猜對了!!!‘)

這樣執行只能猜一次,猜中的幾率很小,如果想給玩家3次機會呢?總不能復制三次代碼執行(其實可以),但是這樣太費勁了。

那麽就使用循環:循環可以做到不用重寫代碼又能讓程序重復一段代碼執行多次。

8.2 基本語法

while 條件:

# 循環體

# 如果條件為真,那麽循環體則執行,執行完畢後再次循環,重新判斷條件。。。

# 如果條件為假,那麽循環體不執行,循環終止

count=0
while count < 3:
print(‘loop‘,count)
count+=1

loop 0

loop 1

loop 2

### 打印0-10

count=0
while count <= 10:
print(‘loop‘,count)
count+=1

#打印0-10之間的偶數

#偶數/2余0
#奇數/2余1

count=0
while count <= 10:
if count%2==0:
print(count)
count+=1

#打印0-10之間的奇數

#偶數/2余0
#奇數/2余1

count=0
while count <= 10:
if count%2==1:
print(count)
count+=1

8.3 無限循環

count=0
while True:
print(count)
count+=1

8.4 while嵌套if...else

name=‘leo‘
password=‘123‘
count=0

while count < 3:
user_name=input(‘user_name>>>: ‘)
user_pass=input(‘user_pass>>>: ‘)
if user_name == name and user_pass == password :
print("login success")
break
else
:
print(用戶名或者密碼錯誤‘)
count+=1

8.5 循環嵌套與tag

語法:

tag=True

  while tag:

    ......

    while tag:

      ........

      while tag:

        tag=False

#練習,要求如下:

1 循環驗證用戶輸入的用戶名與密碼

2 認證通過後,運行用戶重復執行命令

3 當用戶輸入命令為quit時,則退出整個程序

name=‘leo‘
password=‘123‘
count=0
while count < 3:
user_name=input(‘user_name>>>: ‘)
user_pass=input(‘user_pass>>>: ‘)
if user_name == name and user_pass == password :
print("login success")
while True :
cmd=input(‘cmd>>>: ‘)
if cmd == ‘quit‘:
print(‘886‘)
break
else
:
print(‘run %s‘%cmd)
break
else
:
print(用戶名或者密碼錯誤‘)
count+=1

方法二:使用tag

name=‘leo‘
password=‘123‘
count=0
tag=True
while
tag :
if count == 3:
break
user_name=input(‘user_name>>>: ‘)
user_pass=input(‘user_pass>>>: ‘)
if user_name == name and user_pass == password :
print("login success")
while tag :
cmd=input(‘cmd>>>: ‘)
if cmd == ‘quit‘:
print(‘886‘)
tag=False
continue
print(‘run %s‘%cmd)
else:
print(用戶名或者密碼錯誤‘)
count+=1

8.6 break與continue

### break跳出本層循環

count=0
while True:
if count > 5 :
break
print(count)
count+=1

### continue 跳出本次循環
count=0
while count <= 10:
if count == 7 :
count += 1
continue
print(count)
count+=1

8.7 while 和 else

#與其它語言else 一般只與if 搭配不同,在Python 中還有個while ...else 語句,while 後面的else 作用是指,當while 循環正常執行完,中間沒有被break 中止的話,就會執行else後面的語句

count=0
while count <= 10:
#if count == 3:
#break
print(count)
count+=1
else:
print(‘while正常結束了,沒有被break打斷,才會執行這裏的代碼‘)

第二章 Python基礎知識