九九乘法表c语言编程伪代码,py_11分支和循环
一、程序執行的三大流程
1.順序執行 2.分支:選擇條件執行 3.循環執行
二、if分支執行的幾種方式:1.if 2.if else 3.if elif elif else 4.嵌套
三、三元表達式: c = a if a > b else b 條件為真時的值 if (條件表達式) else 條件為假時的值
四、循環
1.whlie 循環:
2.for 循環
3.break和continue
break用于結束當前循環,continue用于結束本次循環,直接開始下次循環
break/continue在嵌套循環中,只對最近的一層循環起作用
continue 如果遇到while循環里面有計數器,if條件里的continue上面修改計數器條件,否則會死循環
4.循環中的else
break 可以阻止 else 語句塊的執行
else在循環結構中,只有循環正常結束后才執行else,如果使用break跳出了循環,不會執行else
5.使用 zip()并行迭代:for name, age, job in zip(names, ages, jobs):
names, ages, jobs是可迭代對象
五、循環代碼優化:
1. 盡量減少循環內部不必要的計算
2. 嵌套循環中,盡量減少內層循環的計算,盡可能向外提。
3. 局部變量查詢較快,盡量使用局部變量
其他優化手段:
1. 連接多個字符串,使用 join()而不使用+
2. 列表進行元素插入和刪除,盡量在列表尾部操作
# 預告:下一篇 4種推導式
xmind總結:
1.分支
image.png
2.循環
image.png
分支和循環
一、程序執行的三大流程
1.順序執行
2.分支:選擇條件執行
3.循環執行
image.png
二、if分支執行的幾種方式
if
條件表達式的值為 False 的情況如下:
False、0、0.0、空值 None、空序列對象(空列表、空元祖、空集合、空字典、空字 符串)
if 條件:
滿足條件時要做的事情1
滿足條件時要做的事情2
滿足條件時要做的事情3
age = 18
if age >= 18:
print("恭喜你,你可以去網吧上網了")
if else
條件滿足執行if下面的代碼,不滿足執行else下面的代碼
if 條件:
條件滿足干的事
else:
條件不滿足要干的事
有車票可以進火車站,沒車票不能進火車站
chePiao = 1 # 用1代表有車票,0代表沒有車票
if chePiao == 1:
print("有車票,可以上火車")
print("終于可以見到Ta了,美滋滋~~~")
else:
print("沒有車票,不能上車")
print("親愛的,那就下次見了,一票難求啊~~~~(>_
if elif elif else
if條件滿足,循環直接結束。不會執行elif
if xxx1:
事情1
elif xxx2:
事情2
elif xxx3:
事情3
else:
不滿足干的事
說明:
當xxx1滿足時,執行事情1,然后整個if結束
當xxx1不滿足時,那么判斷xxx2,如果xxx2滿足,則執行事情2,然后整個if結束
當xxx1不滿足時,xxx2也不滿足,如果xxx3滿足,則執行事情3,然后整個if結束
score = 77
if score>=90 and score<=100:
print('本次考試,等級為A')
elif score>=80 and score<90:
print('本次考試,等級為B')
elif score>=70 and score<80:
print('本次考試,等級為C')
elif score>=60 and score<70:
print('本次考試,等級為D')
elif score>0 and score<60:
print('本次考試,等級為E')
else:
print("恭喜你得了一個宇宙大鴨蛋")
嵌套
if 條件1:
滿足條件1 做的事情1
滿足條件1 做的事情2
...(省略)...
if 條件2:
滿足條件2 做的事情1
滿足條件2 做的事情2
...(省略)...
說明:
外層的if判斷,也可以是if-else
內層的if判斷,也可以是if-else
根據實際開發的情況,進行選擇
注意:
條件表達式后面必須跟冒號:,遇到冒號下面的代碼必須縮進
else和elif 不能單獨存在,后面必須要有判斷條件
chePiao = 1 # 用1代表有車票,0代表沒有車票
daoLenght = 9 # 刀子的長度,單位為cm
if chePiao == 1:
print("有車票,可以進站")
if daoLenght < 10:
print("通過安檢")
print("終于可以見到Ta了,美滋滋~~~")
else:
print("沒有通過安檢")
print("刀子的長度超過規定,等待警察處理...")
else:
print("沒有車票,不能進站")
print("親愛的,那就下次見了,一票難求啊~~~~(>_
判斷一個ip地址合不合法
# 判斷一個ip 地址是否合法
ip = '192.168.100.3'
list_ip = ip.split(".")
# 1.list_ip的長度必須要等于4,不等于是4就不適合ip地址規范
# 2.list_ip這個列表里面的字符串元素,必須是數字而且范圍必須在[0,256]之間
'''
偽代碼:
if 長度==4:
pass
if list_p每一個元素是數字and 0<=int(元素)<=255:
是一個合法的ip地址
'''
is_ip = True # 事先假設ip合法
if len(list_ip) == 4:
for num in list_ip:
if all([num.isdigit(),0 <=int(num)<=255]):
is_ip = True
else:
is_ip = False
else:
is_ip = False
if is_ip:
print("{}是ip地址".format(ip))
else:
print("{}不是ip地址".format(ip))
上面代碼優化一下:方向判斷
# 上面 is_ip =True下面的代碼我們判斷的是符合ip地址的條件走向,如果方向判斷會怎么樣呢?
# 會發現能節約一點帶碼呢
# 判斷一個ip 地址是否合法
ip = '192.168.100.3'
list_ip = ip.split(".")
is_ip = True # 事先假設ip合法
if not len(list_ip) == 4:
is_ip = False
for num in list_ip:
if not all([num.isdigit(),0 <=int(num)<=255]):
is_ip = False
if is_ip:
print("{}是ip地址".format(ip))
else:
print("{}不是ip地址".format(ip))
猜拳游戲
# 猜拳游戲
import random
player = input('請輸入:剪刀(0) 石頭(1) 布(2):')
player = int(player)
computer = random.randint(0, 2)
if ((player == 0) and (computer == 2)) or ((player == 1) and (computer == 0)) or ((player == 2) and (computer == 1)):
print('獲勝,哈哈,你太厲害了')
elif player == computer:
print('平局,要不再來一局')
else:
print('輸了,不要走,洗洗手接著來,決戰到天亮')
三、三元表達式: c = a if a > b else b
條件為真時的值 if (條件表達式) else 條件為假時的值
"""三元表達式: c = a if a > b else b
條件為真時的值 if (條件表達式) else 條件為假時的值
"""
a = 10
b = 5
c = a-b if a >b else a-b
print(c)
四、循環
whlie循環:
樣式
image.png
案例1:
我是阿登打印5次怎么用while循環實現呢?
i = 5
while i >=1:
print(name)
i -= 1
案例2:1-100的和,偶數和,奇數和
# 案例 計算 1-100 之間數字的累加和;計算 1-100 之間偶數的累加和,
# 計算 1-100 之間奇數的累加和。
i = 1
sum = 0 # 累積和
sum1 = 0 # 計算偶數和
sum2 = 0 # 計算基數和
while i <= 100:
sum += i
if i %2 == 0:
sum1 += i
else:
sum2 += i
i += 1 # 修改循環條件
else:
print(sum)
print(sum1)
print(sum2)
案例:打印多種三角形
打印三角形:正著打
# 打印三角形:正著打
i = 1
while i<=5:
j = 1
while j <= i:
print("*", end='')
j += 1
print() # 內層循環 換行
i += 1
結果:
*
**
***
****
*****
打印三角形:倒著打
# 打印三角形:倒立三角形
i = 1
while i<=5:
j = 5
while j >= i:
print("*", end='')
j -= 1
print() # 內層循環 換行
i += 1
結果:
*****
****
***
**
*
打印三角形:先正后倒
i = 1
while i <= 9:
# print("*")
if i <=5:
j = 1
while j <=i:
print("*",end="")
j += 1
print()
else:
j = 9
while j >=i:
print("*", end= "")
j -= 1
print()
i += 1
結果:
*
**
***
****
*****
****
***
**
*
案例:打印九九乘法表
# 打印九九乘法表
i = 1
while i<= 9:
j =1
while j <= i:
print("{}*{}={}".format(j, i,j*i), end="\t")
j += 1
print() # 內層循環結束打印換行
i += 1
結果:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
for循環
格式:
for i in iterable:
循環執行的代碼
else:
循環結束執行的代碼
iterable:可以是字符串 列表 元組 range() 字典 enumerate() eval() 生成器 文件對象
for i in "":
print(i)
else:
print("我是阿登")
結果:
我是阿登
for循環幾種案例
1.遍歷字符串中的字符
for x in "sxt001":
print(x, end=" ")
結果:
s x t 0 0 1
2.遍歷字典
# 2.遍歷字典
d = {'name':'gaoqi','age':18,'address':'西三旗 001 號樓'}
for x in d: #遍歷字典所有的 key
print(x,end=" ")
print() # for循環結束換行
for x in d.keys():#遍歷字典所有的 key
print(x,end=" ")
print()
for x in d.values():#遍歷字典所有的 value
print(x,end=" ")
print()
for x in d.items():#遍歷字典所有的"鍵值對"
print(x,end=" ")
print()
結果:
name age address
name age address
gaoqi 18 西三旗 001 號樓
('name', 'gaoqi') ('age', 18) ('address', '西三旗 001 號樓')
3.range 對象
range 對象是一個迭代器對象,用來產生指定范圍的數字序列。格式為:
range(start, end [,step])
生成的數值序列從 start 開始到 end 結束(不包含 end)。若沒有填寫 start,則默認從 0
開始。step 是可選的步長,默認為 1。如下是幾種典型示例:
for i in range(10) 產生序列:0 1 2 3 4 5 6 7 8 9
for i in range(3,10) 產生序列:3 4 5 6 7 8 9
for i in range(3,10,2) 產生序列:3 5 7 9
利用 for 循環,計算 1-100 之間數字的累加和;計算 1-100 之間偶數的累加和, 計算 1-100 之間奇數的累加和.
sum = 0 #求累積和
sum1 = 0 # 求偶數和
sum2 = 0 # 求基數和
for i in range(101):
sum += i
if i %2 ==0:
sum1 += i
else:
sum2 += i
else:
print(f"1--100累積和:{sum}")
print(f"1--100偶數和:{sum1}")
print(f"1--100基數和:{sum2}")
for循環嵌套:
案例:
# 打印如下圖
"""
0 0 0 0 0
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
"""
for x in range(5): # 外層控制行數
for y in range(5): #內層控制列數
print(f"{x}",end="\t")
print() # 內層循環換行
利用嵌套循環打印九九乘法表
# 利用嵌套循環打印九九乘法表
for n in range(1,10):
for m in range(1,n+1):
print("{}*{}={}".format(m,n, m*n), end="\t")
print()
"""
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
"""
break和continue
1.break
語句可用于 while 和 for 循環,用來結束整個循環。當有嵌套循環時,break 語句只
能跳出最近一層的循環。
案例:打印1-5數字,打印到4的時候結束
# 案例:打印1-5數字,打印到4的時候結束
i = 1
while i <=5:
if i ==4:
break
print(i)
i +=1
else:
print(i) # 這里else下面的語句不會執行,因為 i==4的時候,break結束循環
當有嵌套循環時,break 語句只能跳出最近一層的循環
# 當有嵌套循環時,break 語句只能跳出最近一層的循環
# 打印三角形:正著打
i = 1
while i<=5:
j = 1
while j <= i:
print("*", end='')
j += 1
break
print() # 內層循環 換行
i += 1
# 打印的結果為:
"""
*
*
*
*
*
"""
# 說明 嵌套的while循環 break只影響就近的循環,for循環也是如此。
#當外層while循環結束,整個循環才會停止。
2.continue
continue 語句用于結束本次循環,繼續下一次。多個循環嵌套時,continue 也是應用于最
近的一層循環。
案例:
要求輸入員工的薪資,若薪資小于 0 則重新輸入。最后打印出錄入員工的數量和薪資明細,以及平均薪資
# continue 語句用于結束本次循環,繼續下一次。多個循環嵌套時,continue 也是應用于最近的一層循環
# 案例:要求輸入員工的薪資,若薪資小于 0 則重新輸入。最后打印出錄入員工的數量和薪資明細,以及平均薪資
empNum = 0 # 員工數
salarySum= 0 # 記錄工資總額
salarys = [] # 錄入薪資
while True:
s = input("請輸入員工的薪資:(按 Q 或 q 結束)")
print(s)
if s.upper()=='Q':
print("錄入完成,退出")
break
if float(s)<0:
continue
empNum +=1
salarys.append(float(s))
salarySum += float(s)
print("員工數{0}".format(empNum))
print("錄入薪資:",salarys)
print("平均薪資{0}".format(salarySum/empNum))
結果:
請輸入員工的薪資:(按 Q 或 q 結束)44
44
請輸入員工的薪資:(按 Q 或 q 結束)44
44
請輸入員工的薪資:(按 Q 或 q 結束)22
22
請輸入員工的薪資:(按 Q 或 q 結束)44
44
請輸入員工的薪資:(按 Q 或 q 結束)22
22
請輸入員工的薪資:(按 Q 或 q 結束)Q
Q
錄入完成,退出
員工數5
錄入薪資: [44.0, 44.0, 22.0, 44.0, 22.0]
平均薪資35.2
continue 如果遇到while循環里面有計數器,if條件里的continue上面修改計數器條件,否則會死循環
# continue 如果遇到while循環里面有計數器,if條件里的continue上面修改計數器條件,否則會死循環
# 案例: 打印1-5,等于3的時候不打印
num = 1
s = 1
while num <= 5:
if num ==3:
num += 1
continue # continue在while循環里面的條件語句中跳出下個循環時,記得一定要修改計數器的條件。不然容易死循環
print(num)
num += 1
循環中的else
while、for 循環可以附帶一個 else 語句(可選)。如果 for、while 語句沒有被 break 語句
結束,則會執行 else 子句,否則不執行
語法格式如下:
while 條件表達式:
循環體
else:
語句塊
for 變量 in 可迭代對象:
循環體
else:
語句塊
案例
員工一共 4 人。錄入這 4 位員工的薪資。全部錄入后,打印提示“您已經全部錄
入 4 名員工的薪資”。最后,打印輸出錄入的薪資和平均薪資
# 員工一共 4 人。錄入這 4 位員工的薪資。全部錄入后,打印提示“您已經全部錄
# 入 4 名員工的薪資”。最后,打印輸出錄入的薪資和平均薪資
salarySum= 0 # 記錄工資總額
salarys = [] # 錄入薪資
for i in range(4): # 錄入4次員工的工資
s = input("請輸入員工的薪資:(按 Q 或 q 結束)")
print(s)
if s.upper()=='Q':
print("錄入完成,退出")
break
if float(s)<0:
continue
salarys.append(float(s))
salarySum += float(s) # 記錄錄入的工資總額
else:
print("錄入4位人員的工資完成")
print("錄入薪資:",salarys)
print("平均薪資{0}".format(salarySum/len(salarys)))
請輸入員工的薪資:(按 Q 或 q 結束)400
400
請輸入員工的薪資:(按 Q 或 q 結束)500
500
請輸入員工的薪資:(按 Q 或 q 結束)600
600
請輸入員工的薪資:(按 Q 或 q 結束)800
800
錄入4位人員的工資完成
錄入薪資: [400.0, 500.0, 600.0, 800.0]
平均薪資575.0
使用 zip()并行迭代
# 我們可以通過 zip()函數對多個序列進行并行迭代,zip()函數在最短序列“用完”時就會停
names = ("薛鵬磊","薛老二","薛老三","薛老四")
ages = (18,16,20,25)
jobs = ("老師","程序員","公務員")
for name, age, job in zip(names, ages, jobs):
print("{}--{}--{}".format(name,age,job))
# zip在迭代對象參數個數和其他不一至時,已最少的為準。如jobs這個元組,元素只有3個,其他有4個。最后以jobs的元素個數為準
結果:
薛鵬磊--18--老師
薛老二--16--程序員
薛老三--20--公務員
五、循環代碼優化
盡量減少循環內部不必要的計算
嵌套循環中,盡量減少內層循環的計算,盡可能向外提。
局部變量查詢較快,盡量使用局部變量
# 案例
import time
start = time.time()
for i in range(1000):
result = []
for m in range(100000):
result.append(i*1000+m*100)
end = time.time()
print("耗時: {0}".format((end-start)))
start2 = time.time()
for i in range(1000):
result = []
c = i * 1000
for m in range(100000):
result.append(c+m*100)
end2 = time.time()
print("耗時2: {0}".format((end2-start2)))
if ((end2-start2) - (end-start)) < 0:
print(f"減少內層循環計算代碼速度較快,提升了{(end-start)-(end2-start2)}秒")
print("{:+.10f}".format((end2-start2) - (end-start)))
結果
耗時: 20.654181241989136
耗時2: 16.660953044891357
減少內層循環計算代碼速度較快,提升了3.9932281970977783秒
-3.9932281971
其他優化手段
連接多個字符串,使用 join()而不使用+
列表進行元素插入和刪除,盡量在列表尾部操作
總結
以上是生活随笔為你收集整理的九九乘法表c语言编程伪代码,py_11分支和循环的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言逻辑错误调试,c语言程序,现在出现
- 下一篇: c语言溢出该怎么算,解决整数运算溢出方法