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
