python 流程控制語句


1、基本概念

1.1 流程控制語句

  流程控制語句就是按照一定的步驟來實現某些功能的語句

  python 中主要的流程控制語句:選擇語句、條件表達式、循環語句、跳轉語句、pass 語句

1.2 程序結構

(1)順序結構:按照代碼的順序依次執行

(2)選擇結構:根據條件表達式的結果選擇執行不同的語句

  通常使用 if 語句實現

(3)循環結構:在一定條件下反復執行某段程序的流程結構

2、if 語句

2.1 簡單的 if 語句

  語法:如果符合條件,則...

if 表達式:
    語句塊
# 實例:
#
-*- coding:utf-8 -*- # version:python3.7 number = int(input("請輸入number的值:")) if number > 5: print("number>5") 執行結果: 請輸入number的值:6 number>5

2.2 if...else 語句

  語法:如果符合條件,則...,否則...

if 表達式:
    語句塊1
else:
    語句塊2
# 實例:
#
-*- coding:utf-8 -*- # version:python3.7 score = int(input("請輸入你英語成績:")) if score >= 60: print("你的英語成績合格") else: print("你的英語成績不合格") 執行結果: 請輸入你英語成績:56 你的英語成績不合格

2.3 if...elif...else 語句

  語法:如果符合條件,就...,否則,如果滿足另一種條件,則...

if 表達式1:
    語句塊1
elif 表達式2:
    語句塊2
......
else:    #如果都不滿足則執行語句塊n
    語句塊n
實例:
# -*- coding:utf-8 -*-
# version:python3.7
# 猜數游戲

number = 55
print("猜數字游戲!")
number_in = int(input("你猜的數字是:"))
if number_in == number:
    print("你猜對了!")
elif number_in > number:
    print("你猜的數字大了")
else:
    print("你猜的數字小了")

執行結果:
猜數字游戲!
你猜的數字是:56
你猜的數字大了
實例:折中算法
# -*- coding:utf-8 -*-
# version:python3.7
# 輸入一個最大5位的正整數,判斷這是幾位數

num = int(input("please enter this number:"))
if num >= 1000:
    if num >= 10000:
        print("該數為5位數")
    else:
        print("該數為4位數")
else:
    if num >= 100:
        print("該數為3位數")
    elif num >= 10:
        print("該數為2位數")
    else:
        print("該數為1位數")

  注意1:如果已經定義了一個布爾類型的變量 flag,推薦使用如下判斷語句:

if flag:
if not flag:

   而不推薦使用如下判斷語句:

if flag == True:     #不推薦
if flag == False:    #不推薦

  注意2:判斷變量是否等於數值時:

# 建議使用:
if 1== a
# 不建議使用:if a == 1,容易錯寫為
if a = 1

2.4 if 語句的嵌套

  語法:嵌套語法可以有多種結合,此處列舉一列如下

if 表達式1:
        if 表達式2:
            語句塊2
        else:
            語句塊3
else:
    語句塊1
# 實例:判斷是否為酒后駕車
#
-*- coding:utf-8 -*- # version:python3.7 print("為了您和家人的安全,嚴禁酒后駕車!") proof = int(input("請輸入每100毫升血液的酒精含量:")) if proof < 20: print("您還不構成飲酒駕車,可以開車,但請注意安全!") else: if 80 > proof >= 20: print("已經達到酒后駕駛標准,請不要開車!") else: print("您已經達到醉酒駕駛標准,千萬不要開車!!!") 執行結果1: 為了您和家人的安全,嚴禁酒后駕車! 請輸入每100毫升血液的酒精含量:90 您已經達到醉酒駕駛標准,千萬不要開車!!! 執行結果2: 為了您和家人的安全,嚴禁酒后駕車! 請輸入每100毫升血液的酒精含量:19 您還不構成飲酒駕車,可以開車,但請注意安全!

3、循環語句

3.1 while 循環

  一直重復,直到條件不滿足時停止,語法:

while 條件表達式:
    循環體
# 實例:while循環實現1+2+...+100
# -*- coding:utf-8 -*-
# version:python3.7

sum = 0
n = 0
while n <= 100:
    sum = sum + n
    n = += 1
print("1+2+...+100=",sum)

執行結果:
1+2+...+100= 5050

3.2 for 循環

  一般重復一定次數,通常用於迭代、枚舉或遍歷,語法:

for 迭代變量 in 對象:
    循環體
實例:for循環實現1+2+...+100
# -*- coding:utf-8 -*-
# version:python3.7

sum
= 0 #保存累加結果的變量 for i in range(101): #range()函數實現數值循環:生成一系列連續整數 sum += i #實現累加 print("1+2+...+100=",sum) 執行結果:
1+2+...+100= 5050

  range() 函數實現數值循環

    主要作用:生成一系列連續整數

    基本語法:range(start,end,stop)

      start 指起始值(包括)、end結束值(不包括)、stop

# range()實例:
# -*- coding:utf-8 -*-
# version:python3.7

for i in range(1,10,2): #輸出1,3,5,7,9(從1開始到10結束,隔2個) print(i,end=' ') #range默認輸出到多行,end=' '指以空格分隔

執行結果:
1 3 5 7 9

  for循環除了可以循環數值,也可以遍歷字符串

# 實例:for循環遍歷字符串
# -*- coding:utf-8 -*-
# version:python3.7

string = "我可以的"
print(string)
for ch in string:
    print(ch)

執行結果:
我可以的
我
可
以
的

3.3 循環嵌套

# 語法1
while 條件表達式1:
    while 條件表達式2:
        循環體2
    循環體1

# 語法2
while 條件表達式:
    for 迭代變量 in 對象:
        循環體2
    循環體1

# 語法3
for 迭代變量 in 對象:
    while 條件表達式:
        循環體2
    循環體1

# 語法4,5......
實例:使用循環嵌套,輸出99乘法表
# -*- coding:utf-8 -*-
# version:python3.7

for i in range(1,10):         #控制行數
    for j in range(1,i+1):    #輸出與行數相等的列,range不包括結束值,所以i+1
        print(str(j)+"X"+str(i)+"="+str(j*i)+"\t",end='')    #\t:轉義字符一個Tab鍵,end='':在一行輸出
    print("")    #轉行

執行結果:
1X1=1    
1X2=2    2X2=4    
1X3=3    2X3=6    3X3=9    
1X4=4    2X4=8    3X4=12    4X4=16    
1X5=5    2X5=10    3X5=15    4X5=20    5X5=25    
1X6=6    2X6=12    3X6=18    4X6=24    5X6=30    6X6=36    
1X7=7    2X7=14    3X7=21    4X7=28    5X7=35    6X7=42    7X7=49    
1X8=8    2X8=16    3X8=24    4X8=32    5X8=40    6X8=48    7X8=56    8X8=64    
1X9=9    2X9=18    3X9=27    4X9=36    5X9=45    6X9=54    7X9=63    8X9=72    9X9=81

4、跳轉語句

4.1 break 語句

  直接跳出循環

# 實例:電影院座位五行七列,你的座位為第二行第三列,請找出你的座位
# -*- coding:utf-8 -*-
# version:python3.7

for row in range(1,5):
    print("當前所在排:",row)
    if row == 2:
        print("這是您座位所在排")
        for column in range(1,8):
            print("當前所在列:",column)
            if column == 3:
                print("這是您的座位")
                break
        break

執行結果:
當前所在排: 1
當前所在排: 2
這是您座位所在排
當前所在列: 1
當前所在列: 2
當前所在列: 3
這是您的座位

# 如果不使用break跳轉語句跳出循環,會將所有排數都打印一遍

4.2 continue 語句

  不能跳出整個語句,只能退出本次循環,提前進入下次循環

# 實例:逢七過游戲(叫數游戲:遇到七的倍數和以七結尾的數過)
# -*- coding:utf-8 -*-
# version:python3.7

total = 99    #假定99次都過
for number in range(1,100):    #從1循環到99
    if number % 7 == 0:    #是七的倍數
        continue           #繼續下一次叫數
    else:
        string = str(number)
        if string.endswith('7'):    #判斷是否以七結尾
            continue       #繼續下一次循環
    total -= 1    #可過次數-1
print("從1到99可以過",total,"")

執行結果:
從1到99可以過 22 次

4.3 pass 語句

  表示空語句,不做任何事情,起占位作用

# 實例:輸出1-10之間的偶數,不是偶數的先使用pass空語句占位
# -*- coding:utf-8 -*-
# version:python3.7

for i in range(1,11):
    if i % 2 == 0:
        print(i,end=' ')    #輸出1-10之間的偶數,中間使用空格隔開
    else:
        pass    #不是偶數的先占位

執行結果:
2 4 6 8 10 

 5、算法入門

5.1 打印九九乘法表

# -*- coding:utf-8 -*-
# version:python3.7

for i in range(1, 10):
    for j in range(1, i+1):
        print("{}X{}={}".format(j, i, j*i), end='\t')    #格式化字符串,后續篇幅講解
    print("")

#執行結果:
1X1=1    
1X2=2    2X2=4    
1X3=3    2X3=6     3X3=9    
1X4=4    2X4=8     3X4=12    4X4=16    
1X5=5    2X5=10    3X5=15    4X5=20    5X5=25    
1X6=6    2X6=12    3X6=18    4X6=24    5X6=30    6X6=36    
1X7=7    2X7=14    3X7=21    4X7=28    5X7=35    6X7=42    7X7=49    
1X8=8    2X8=16    3X8=24    4X8=32    5X8=40    6X8=48    7X8=56    8X8=64    
1X9=9    2X9=18    3X9=27    4X9=36    5X9=45    6X9=54    7X9=63    8X9=72    9X9=81

5.2 打印菱形

#分析:
* #3個空格 + 1個*號 *** #2個空格 + 3個*號 ***** #1個空格 + 5個*號 ******* #0個空格 + 7個*號 ***** #1個空格 + 5個*號 *** #2個空格 + 3個*號 * #3個空格 + 1個*號

 

# -*- coding:utf-8 -*-
# version:python3.7

n = 7    #定義菱形最長行*數
e = n//2
for i in range(-e, e+1):
    print("{}{}".format(abs(i)*" ", (n-(2*abs(i)))*"*"))

#執行結果:
   *
  ***
 *****
*******
 *****
  ***
   *

5.3 打印100以內的斐波那契數列

# 打印100以內的斐波那契數列
# -*- coding:utf-8 -*- # version:python3.7


a2 = 1 a1 = 1 print(a2,end=' ') print(a1,end=' ') while True: a = a2 + a1 if a > 100: break else: print(a,end=' ') a2 = a1 a1 = a

執行結果:
1 1 2 3 5 8 13 21 34 55 89

5.4 求斐波那契數列的第101項

# 求斐波那契數列的第101項
# -*- coding:utf-8 -*-
# version:python3.7

a2 = 1
a1 = 1
count = 2

while True:
    a = a2 + a1
    if count == 100:
        print(a,end=' ')
        break
    count += 1
    a2 = a1
    a1 = a

執行結果:
573147844013817084101

5.5 求10萬以內的所有質數

  一般考慮時間復雜度,算法最優,但開始剛接觸算法,先不用考慮這么多

# 先求20以內的所有質數,再求10萬以內的所有質數
# -*- coding:utf-8 -*-
# version:python3.7

for i in range(2,20): count = 0 for j in range(1,i): if i % j == 0: count += 1 if count == 1: print(i,end=' ')

執行結果:
2 3 5 7 11 13 17 19

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM