有了以上的基本基礎,已經上面寫的幾個小練習,大家肯定有很多的不滿,比如查詢為什麼查詢一次就退出了呢?下麵我們來學習條件語句 一、萬惡的加號 以前我們在print的時候如果要加上變數都有是使用+來作為連接,但是這樣做是不好的 因為在使用加號的時候,會在記憶體中開闢新的記憶體地址來存放新的內容這樣做的壞處就
有了以上的基本基礎,已經上面寫的幾個小練習,大家肯定有很多的不滿,比如查詢為什麼查詢一次就退出了呢?下麵我們來學習條件語句
一、萬惡的加號
以前我們在print的時候如果要加上變數都有是使用+來作為連接,但是這樣做是不好的
因為在使用加號的時候,會在記憶體中開闢新的記憶體地址來存放新的內容這樣做的壞處就是增加了記憶體的消耗
那麼我們該怎麼辦呢?
(1)字元串格式化
①內置占位符
Python 支持格式化字元串的輸出 。儘管這樣可能會用到非常複雜的表達式,但最基本的用法是將一個值插入到一個有字元串格式符 %s 的字元串中。在 Python 中,字元串格式化使用與 C 中 sprintf 函數一樣的語法。
類如上述例子我們換種寫法:
>>> a = "abc"
>>> print ("sssss%s" %(a))
sssssabc我們主要到這裡多了一個%s這裡的%s我們稱之為占位符,針對數據類型的不同我們有很多占位符
②自定義占位符format函數
aa = "dsadsa{ss}"
print(aa.format(ss='ccccc'))dsadsaccccc在print中的ss=‘ccccc’可以替換成變數這樣就不用考慮數據的類型了
二、兩個變數的值的替換
在一些演算法中我們需要用到將變數的值進行替換
方法1:
>>> a = 1
>>> b = 2>>> c = a
>>> a = b
>>> b = c>>> print (a,b)
2 1這樣我們使用另外一個變數,來暫時中轉a的值這樣我們多出了一個變數看起來不高端那麼還有別的方法麽?
方法2:
>>> a = 1
>>> b = 2
>>> print(a,b)
1 2
>>> a,b = b,a
>>> print (a,b)
2 1是不是很好玩
三、布爾表達式
布爾表達式就是判斷真假,也就是True和False,電腦的機器代碼由1和0來表示所以,1表示有也表示真,0表示無也表示假。
我們來看下麵的例子:
從下麵的例子可以看出1等於True真的時候返回值是True真也就是對的,當0等於True的時候返回值是假也就是錯的,當0等於假的時候返回值是True也就是正確。
>>> 1 == True
True
>>> 0 == True
False
>>> 0 == False
True例2:下麵的例子也可以知道,當值為空的時候,布爾表達式認成為假
>>> bool('')
False
>>> bool('a')
True
四、if語句
(1)python中的if語句跟其他語言一樣也是做邏輯判斷用的,比如我們要實現這麼一個
需求(1):
如果用戶輸入的值為a則輸出歡迎,否則輸出翻滾吧xxx
inpot = input("請輸入名稱:")
if inpot == "a" :
print('歡迎您:%s'%(inpot))
else:
print('翻滾吧:%s'%(inpot))需求(2):
如果用戶輸入的值為a則輸出歡迎,如果用戶輸入的值為b則輸出歡迎主任視察,否則輸出翻滾吧xxx
inpot = input("請輸入名稱:")
if inpot == "a" :
print('歡迎您:%s'%(inpot))
elif inpot == "b":
print('歡迎主任[%s]視察'%(inpot))
else:
print('翻滾吧:%s'%(inpot))
從上面的兩個例子可以看出,python沒有shell腳本中的case,而變成了if中的elif,在if語句中我們可以只使用if,而不用else。
五、while迴圈
為什麼會存在while迴圈呢,因為我們需要做一些重覆的事情,比如我們要列印 1-100安裝常理我們不就需要print 1 print 2 。。。。。print100非常的浪費代碼所以呢我們可以這麼乾
(1)while迴圈-計數器
x = 1 #先設置一個變數的值為1
while x <= 100: #當x的值小於等於100時運行下麵的代碼
print(x) #列印x的值
x = x+1 #每次迴圈x都加1 ,第一次迴圈就是 x(1)+1= 2 第二次就是x(2)+1=3以此類推這樣的語句方式稱之為計數器(2)while死迴圈
我們知道布爾表達式中的真,這裡我們可以跟while結合變成一個死迴圈,那麼死迴圈不是一直都在運行的麽,那怎麼辦,python提供break可以退出當前迴圈,我們結合之前的練習來試一下練習1:需求:寫一個輸入員工姓名就可以查詢到員工的電話和編號的程式,要求可以持續查詢,除非用戶輸入退出的命令則結束python3.5環境#!/usr/bin/env python
# -*- coding:utf-8 -*-address = {
'a':{
'number':'01',
'phone':'110'
},
'b':{
'number':'02',
'phone':'119'
},
'c':{
'number':'03',
'phone':'120'
}
}
while True:
inpu = input("請輸入查詢的用戶名:")
if inpu in address.keys(): #address.keys()表示獲取字典的所有key(鍵)
print("當前用戶:%s"%(inpu))
print('用戶編號是:%s'%(address[inpu]['number']))
print('用戶電話是:%s'%(address[inpu]['phone']))
elif inpu == "exit" :
print('謝謝使用再見')
break
else:
print("您輸入的用戶[%s]不存在"%(inpu))
結果:
六、for迴圈
(1)初識for迴圈
while語句非常的靈活,但是有些特定條件while迴圈使用起來非常複雜,比如說有一個列表,想要分別列印列表中的內容,用while也可以實現,但是就沒有for迴圈那麼簡單了,我們來對比一下我們有一個列表a = ['a','b','c','d']我們分別用while和for來列印出列表中的每個元素while:a = ['a','b','c','d']
x = 0
while x < len(a): #len(a)的值為4,那麼列表a的索引是從0-3的所以這裡是x小於len(a)
print(a[x])
x = x+1for:a = ['a','b','c','d']
for i in a:
print(i)對比之後呢至少for迴圈少了兩行代碼for迴圈代碼中的 for i in a:表示i從頭到a序列中取值,所以第一次迴圈 i = a第二次 i = b以此類推(2)range函數
還記得while迴圈列印1-100麽,這裡我們可以使用for加range函數來實現:for i in range(1,101): #為什麼這裡寫1-101,因為range函數的特性,如果是1-100他就會生成1-99
print(i) #所以這裡是1-101range函數的工作方式類似於分片(3)for迴圈字典
註:字典元素的順序沒有定義的,也就是說當你for迴圈出來的字典的鍵值對是沒有順序的
方法1:
a = {
"a":"aa",
"b":"bb",
"c":"cc"
}
for key in a:
print ('歡迎【%s】,您的信息是(%s)'%(key,a[key]))方法2:
a = {
"a":"aa",
"b":"bb",
"c":"cc"
}
for key,value in a.items():
print ('歡迎【%s】,您的信息是(%s)'%(key,value))
第二種發放使用到了items函數,也就是把字典a轉換成了([('b', 'bb'), ('a', 'aa'), ('c', 'cc')])這種結構在分別賦值給key和value
七、跳出迴圈
(1)break,之前介紹過的跳出當前迴圈
(2)contiune一般用於if語句,也就是說進入當前的判斷後沒必要繼續判斷下去就可以使用它
例子:
for i in range(1,6):
if i == 3 :
print('ok')
continue #當i等於3時,輸出ok並且結束此次判斷也就是不執行else了
else:
print(i)
(3)pass
跟英文的意思一樣過掉,什麼都不做
for i in range(1,6):
if i == 3 :
print('ok')
continue
elif i == 4 :
pass
else:
print(i)
八、運算
python中有非常多的運算這裡推薦網站:http://www.runoob.com/python/python-operators.html
Python算術運算符
Python比較運算符
Python賦值運算符
Python位運算符
Python邏輯運算符
Python成員運算符
Python身份運算符
Python運算符優先順序