Python入門-控制流

< 返回索引頁html

控制流

上一張咱們瞭解了Python的基本語法和數據結構。到目前位置,咱們編寫的代碼都是一行一行的由上往下一次執行的。咱們叫這種形式的代碼爲順序結構。可是在真正的編碼環境中,這種順序結構實現的場景有限。下面咱們來看下Python編程中的一些其餘複雜控制結構。編程

分支結構

試想,一個簡單的計算器的計算過程,當咱們按下加號鍵的時候,它會執行相加操做;當咱們按下減號的時候,它則會執行減法操做。這併產生了2個分支,它根據咱們的輸入這個未知的條件來決定該走那個分支。像這種根據某條件來判斷走那個分支的結構叫作分支結構segmentfault

if/elif/else

Python 中使用關鍵字ifelseelif 來實現分支結構。下面咱們來看下它們的語法:數據結構

# -*- coding:utf-8 -*- 
# calculator.py

a, b = 2, 3 
sign = input('請輸入運算符:')
if sign == '+':  # 判斷條件
    print(a+b)   # 邏輯代碼塊
elif sign == '-':
    print(a-b)
else:
    print('暫不支持該符號!')

語法說明:dom

  • Python 中分支結構中判斷條件以英文冒號 : 結尾;
  • 分支結構中的邏輯代碼塊,以相對於條件語句向右4個空格或1個tab爲分隔符,建議使用4個空格,tab在不一樣系統表現不一致可能引發混了,影響代碼的跨平臺性。
  • ifelif 後必須加判斷表達式,通常表達式返回值爲布爾型,當非布爾型時,表示該值是否存在。
  • 咱們在輸入運算符時,須要使用引號引發來,由於單獨的一個運算符是會報錯的。
  • if 可單獨使用,也可單獨和elifelse 配合使用。
# 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 '下午好'

循環結構

上一章咱們還學習了列表,那當咱們要想依次去除列表中的元素時,便須要來循環依次取出,這種循環操做的結構叫作循環結構函數

for

Python 中使用關鍵字 for 來實現已知長度的循環。用法以下:oop

l = [1,2,3,4,5]
sum = 0 
for i in l :
    sum += i
print(sum)

語法說明:

  • for 使用關鍵字in 來遍歷序列,獲取其元素,有變量i 來表示,以便在之下的邏輯代碼塊中使用。
  • for 語句以英文冒號結尾
  • 邏輯代碼塊以4個空格或tab分隔。
  • 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)

while

Python 中還提供了另外一種循環語句關鍵字 while 用來實現知足條件下的一個循環操做。

# loop_while.py
i = 0 
sum = 0
while i <= 5:
    sum += i
    i += 1 
print(sum)

break 和 continue

咱們試想,當while的條件永遠爲真時,會發生什麼?while下的邏輯塊會被一直執行下去,若是該邏輯段耗費計算機資源的話。計算機資源會被他很快的消耗殆盡。這種狀況,咱們把它叫作死循環無限循環。這種循環,大多數狀況下都是不對的,除非你明確的知道,你就是要使用一個這樣的無限循環。Python 中提供了2個關鍵字breakcontinue,讓咱們的操做能夠跳出無限循環。

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

有時候,咱們的代碼塊想直接跳過,可以使用關鍵字 pass。它常被用來佔位使用。

for i in range(5):
    pass # 佔位

總結

本章咱們學習了Python的代碼邏輯控制流,咱們來總結下:

  • Python代碼結構有順序結構、分支結構和循環結構;
  • 分支結構可以使用if/elif/else 實現;
  • 循環結構可以使用for/while 實現;
  • 可以使用breakcontinue來截斷循環結構;

練習

  • 一、 輸出乘法口訣表(九九表)
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()
  • 四、實現猜數字遊戲, 要求:

    • 計算機出一個1~100之間的隨機數由人來猜
    • 計算機根據人猜的數字分別給出提示大一點/小一點/猜對了
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('你的智商餘額明顯不足')

參考

相關文章
相關標籤/搜索