第二章 Python基礎知識
第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 變量名的定義規範
- 變量名可以是字母、數字和下劃線(_)的組合
- 變量名不能以數字開頭
- 關鍵字不能聲明為變量名:[‘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 |
** |
冪 - 返回a的b次冪,就是返回多少次方 |
10的5次方=100000 |
// |
取整除 - 返回a以b的商的整數部分 |
a // b =2 |
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並且是漂亮的,那麽:表白,否則:叫阿姨
思考:
首先要先確定有幾個變量:age、height、weight、is_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基礎知識