< 返回索引頁html
上一張咱們瞭解了Python的基本語法和數據結構。到目前位置,咱們編寫的代碼都是一行一行的由上往下一次執行的。咱們叫這種形式的代碼爲順序結構
。可是在真正的編碼環境中,這種順序結構實現的場景有限。下面咱們來看下Python編程中的一些其餘複雜控制結構。編程
試想,一個簡單的計算器的計算過程,當咱們按下加號鍵的時候,它會執行相加操做;當咱們按下減號的時候,它則會執行減法操做。這併產生了2個分支,它根據咱們的輸入這個未知的條件來決定該走那個分支。像這種根據某條件來判斷走那個分支的結構叫作分支結構
。segmentfault
Python 中使用關鍵字if
、 else
和 elif
來實現分支結構。下面咱們來看下它們的語法:數據結構
# -*- coding:utf-8 -*- # calculator.py a, b = 2, 3 sign = input('請輸入運算符:') if sign == '+': # 判斷條件 print(a+b) # 邏輯代碼塊 elif sign == '-': print(a-b) else: print('暫不支持該符號!')
語法說明:dom
:
結尾;if
和 elif
後必須加判斷表達式,通常表達式返回值爲布爾型,當非布爾型時,表示該值是否存在。if
可單獨使用,也可單獨和elif
或 else
配合使用。# if 單獨使用 if '1': print('這是真的') # if 和 else 配合使用 if False: print('這是假的') else: print('這是真的') # if 和 elif 配合使用 if False: print('這是假的') elif True: print('這是真的')
# -*- coding:utf-8 -*- # nesting_if.py a = int(input('請輸入:')) if a > 4: if a < 10: print('大於4,小於10') else: print('大於10') else: print('小於4')
三元操做符
。a = '上午好' if now_time < 12 else '下午好'
上一章咱們還學習了列表,那當咱們要想依次去除列表中的元素時,便須要來循環依次取出,這種循環操做的結構叫作循環結構
。函數
Python 中使用關鍵字 for
來實現已知長度的循環。用法以下:oop
l = [1,2,3,4,5] sum = 0 for i in l : sum += i print(sum)
語法說明:
for
使用關鍵字in
來遍歷序列,獲取其元素,有變量i
來表示,以便在之下的邏輯代碼塊中使用。for
語句以英文冒號結尾for
循環也是能夠嵌套使用的。for
還可遍歷成組元素的序列,以下:l = [(1,2),(1,3),(1,4)] for i, j in l: print(i) print(j)
在Python中提供了一個內置函數 range(start,length,step)
來專門生成用來遍歷的整數序列,其返回值爲迭代器(可理解爲列表對象,後邊會講解)。start
爲開始整數,可省略,省略時默認爲0;length
爲結束整數,但不包含本身;step
爲步長,及2個整數之間的間隔,可省略,省略時默認爲1。使用range
函數來改寫上邊的代碼爲:
sum = 0 for i in range(1,6): sum += i print(sum)
Python 中還提供了另外一種循環語句關鍵字 while
用來實現知足條件下的一個循環操做。
# loop_while.py i = 0 sum = 0 while i <= 5: sum += i i += 1 print(sum)
咱們試想,當while
的條件永遠爲真時,會發生什麼?while下的邏輯塊會被一直執行下去,若是該邏輯段耗費計算機資源的話。計算機資源會被他很快的消耗殆盡。這種狀況,咱們把它叫作死循環
或無限循環
。這種循環,大多數狀況下都是不對的,除非你明確的知道,你就是要使用一個這樣的無限循環。Python 中提供了2個關鍵字break
和continue
,讓咱們的操做能夠跳出無限循環。
break 用法
# while 中使用 sum = 0 while True: if sum > 10: print('sum已大於10') break sum += 1 print(sum) # for 中使用 sum = 0 for i in range(100): if sum > 10: print('sum已大於10') break; sum += 1 print(sum)
語法說明:
break
語句執行後,直接退出循環,再也不循環continue用法
sum = 0 for i in range(100): if sum > 10: print('sum已大於10') continue; sum += 1 print(sum)
語法說明:
continue
語句執行後,當前循環語句以後的語句再也不執行,直接跳入下一次的循環繼續執行。有時候,咱們的代碼塊想直接跳過,可以使用關鍵字 pass
。它常被用來佔位使用。
for i in range(5): pass # 佔位
本章咱們學習了Python的代碼邏輯控制流,咱們來總結下:
if
/elif
/else
實現;for
/while
實現;break
和continue
來截斷循環結構;for i in range(1, 10): for j in range(1, i + 1): print('%d*%d=%d' % (i, j, i * j), end='\t') print()
+
、-
、*
、/
的運算。first = int(input('請輸入一個數值:')) sign = input('請輸入運算符:') second = int(input('請輸入一個數值:')) if sign == '+': print('%s+%s=%s' % (first, second, first+second)) elif sign == '-': print('%s-%s=%s' % (first, second, first-second)) elif sign == '*': print('%s*%s=%s' % (first, second, first*second)) elif sign == '/': print('%s/%s=%s' % (first, second, first/second)) else: print('不支持該運算符')
""" * ** *** **** ***** * ** *** **** ***** * *** ***** ******* ********* """
row = int(input('請輸入行數: ')) for i in range(row): for _ in range(i + 1): print('*', end='') print() for i in range(row): for j in range(row): if j < row - i - 1: print(' ', end='') else: print('*', end='') print() for i in range(row): for _ in range(row - i - 1): print(' ', end='') for _ in range(2 * i + 1): print('*', end='') print()
四、實現猜數字遊戲, 要求:
import random answer = random.randint(1, 100) counter = 0 while True: counter += 1 number = int(input('請輸入: ')) if number < answer: print('大一點') elif number > answer: print('小一點') else: print('恭喜你猜對了!') break print('你總共猜了%d次' % counter) if counter > 7: print('你的智商餘額明顯不足')