Python成長之路第一篇(4)_if,for,while條件語句

来源:http://www.cnblogs.com/bj-xy/archive/2016/02/03/5180000.html
-Advertisement-
Play Games

有了以上的基本基礎,已經上面寫的幾個小練習,大家肯定有很多的不滿,比如查詢為什麼查詢一次就退出了呢?下麵我們來學習條件語句 一、萬惡的加號 以前我們在print的時候如果要加上變數都有是使用+來作為連接,但是這樣做是不好的 因為在使用加號的時候,會在記憶體中開闢新的記憶體地址來存放新的內容這樣做的壞處就


有了以上的基本基礎,已經上面寫的幾個小練習,大家肯定有很多的不滿,比如查詢為什麼查詢一次就退出了呢?下麵我們來學習條件語句

 

一、萬惡的加號

以前我們在print的時候如果要加上變數都有是使用+來作為連接,但是這樣做是不好的

因為在使用加號的時候,會在記憶體中開闢新的記憶體地址來存放新的內容這樣做的壞處就是增加了記憶體的消耗

image 

那麼我們該怎麼辦呢?

(1)字元串格式化

①內置占位符

Python 支持格式化字元串的輸出 。儘管這樣可能會用到非常複雜的表達式,但最基本的用法是將一個值插入到一個有字元串格式符 %s 的字元串中。在 Python 中,字元串格式化使用與 C 中 sprintf 函數一樣的語法。

類如上述例子我們換種寫法:

>>> a = "abc"
>>> print ("sssss%s" %(a))
sssssabc

我們主要到這裡多了一個%s這裡的%s我們稱之為占位符,針對數據類型的不同我們有很多占位符

image

 ②自定義占位符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))
image image 

需求(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))
結果:
image 
六、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+1
for:
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-101
range函數的工作方式類似於分片
(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))

 

結果image

第二種發放使用到了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)

結果:image

(3)pass

跟英文的意思一樣過掉,什麼都不做

for i in range(1,6):
if i == 3 :
print('ok')
continue
elif i == 4 :
pass
else:
print(i)

結果image

八、運算

python中有非常多的運算這裡推薦網站:http://www.runoob.com/python/python-operators.html

Python算術運算符

clip_image002

Python比較運算符

clip_image004

Python賦值運算符

clip_image006

Python位運算符

clip_image008

 

 

Python邏輯運算符

clip_image002[6]

Python成員運算符

clip_image004[6]

Python身份運算符

clip_image006[5]

Python運算符優先順序

image


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 以一元多項式加法運算為例: A,B可用線性鏈表可以表示為: “和多項式”鏈表如下(圖中的長方框表示已經被釋放的結點): #include <stdio.h> #include <stdlib.h> typedef struct Polyn{ int data; int index; struct P
  • Day14 集合框架01 體系概述02 共性方法03 迭代器04 List集合共性方法05 ListIterator06 List集合具體對象特點07 Vector中的枚舉 01 體系概述 集合類為什麼出現集合類?面向對象語言對事物的體現都是以對象的形式,所以為了方便對多個對象的操作,就需要對對象進
  • 註意:本篇博客,主要參考自以下三本書 《分散式Java應用:基礎與實踐》 《深入理解Java虛擬機(第二版)》 《突破程式員基本功的16課》 說明:關於JVM記憶體結構,查看《第一章 JVM記憶體結構》,下麵所講的JVM記憶體分配主要是指在Hotspot JVM下新建對象在堆記憶體中分配的情況。 1、創建一
  • 上代碼 $arr = array( 'a'=> 'a11', 'b'=> 'b22', 'c'=> 'c33', ); foreach ($arr as $k=>&$v){ // Do somethind } foreach ($arr as $k=>$v){ var_dump($v); } 這樣的
  • 開關問題 題意:給n(0 < n < 29)開關的初始和最終狀態(01表示),以及開關之間的關聯關係(關聯關係是單向的輸入a b表示a->b),問有幾種方式得到最終的狀態。否則輸出字元字面值。 1.與poj 1222的區別:關聯為單向,需要預處理出每個開關對自己的關聯(開始在輸入關聯關係中處理自身的
  • Timer & TimerTask @(Base)[JDK, Timer, TimerTask] Timer schedule(動詞) task在後臺執行。這個Task可能是只執行一次的task,也可能是按照一定規律執行的task。這也是JDK1.3提供的一個非常老的工具類 對於每一個維持sched
  • 身處大天朝,必須學會的一項技能就是解決中文顯示問題。這個字元問題還搞了我一天,以下是個人解決亂碼問題的實踐結果,希望可以給其他人一些幫助 讀取xml文件代碼: 1 CCDictionary* message = CCDictionary::createWithContentsOfFile("chin
  • 官方文檔:http://zetcode.com/gui/pyqt4/ 中文文檔:http://www.qaulau.com/books/PyQt4_Tutorial/index.html 先記錄簡單的,以下代碼可顯示一個基本的window: #!/usr/bin/python # -*- codin
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...