python——流程控制語句
1.if-else條件語句
條件語句,條件滿足,執行一部分程式碼,不滿足,執行另一部分程式碼
四種基本格式:
(1)單if
... ①
if 條件:
條件滿足時執行的程式碼...②
...③
執行順序:
S1:執行①
S2:判斷條件,如果條件滿足則執行②,然後跳轉S3;否則跳轉S3
S3:執行③
(2) 單if-else
...①
if 條件:
條件滿足時執行的程式碼...②
else: 條件不滿足時執行的程式碼...③
...④
執行順序:
S1:執行①
S2:判斷條件,如果條件滿足執行②,然後跳轉S4;否則跳轉S3
S3:執行③,然後跳轉S4
S4:執行④
(3) 多if-else
...①
if 條件1:
條件1滿足時執行的程式碼...②
else if 條件2:
條件2滿足時執行的程式碼...③
else: 條件2不滿足時執行的程式碼...④
...⑤
執行順序:
S1:執行①
S2:判斷條件1,如果條件1滿足執行②,然後跳轉S5;否則跳轉S3
S3:判斷條件2,如果條件2滿足執行③,然後跳轉S5;否則跳轉S4
S4:執行④,然後跳轉S5
S5:執行⑤
(4) if-elif
...①
if 條件1:
條件1滿足時執行的程式碼...②
elif 條件2:
條件2滿足時執行的程式碼...③
else:
條件2不滿足時執行的程式碼...④
...⑤
執行順序:
S1:執行①
S2:判斷條件1,如果條件1滿足執行②,然後跳轉S5;否則跳轉S3
S3:判斷條件2,如果條件2滿足執行③,然後跳轉S5;否則跳轉S4
S4:執行④,然後跳轉S5
S5:執行⑤
'''
7.猜拳遊戲
石頭 剪刀 布
0 1 2
資料:
unum 0 1 2
cnum 0 1 2
'''
import random
unum=int(input("石頭(0),剪刀(1),布(2) 請選擇:"))
cnum=random.randint(0,2) #[0,2)
l=["石頭","剪刀","布"]
print("使用者:%s"%l[unum])
print("電腦:%s"%l[cnum])
if unum==0 and cnum==1:
print("贏了!")
elif unum==0 and cnum==2:
print("輸了!")
elif unum==1 and cnum==2:
print("贏了!")
elif unum==1 and cnum==0:
print("輸了!")
elif unum==2 and cnum==0:
print("贏了!")
elif unum==2 and cnum==1:
print("輸了!")
else:
print("平局!")
2.while迴圈語句
當有重複執行的程式碼存在時,可用迴圈語句替代
while迴圈,一般用於迴圈次數未知,迴圈結束條件已知的情況
while 條件:
條件滿足時迴圈執行的程式碼
3.for迴圈語句
一般用於迴圈次數已知,結束條件未知的情況下,通常用於遍歷
for 變數 in 序列:
迴圈執行的程式碼
'''
列印99乘法表
'''
for i in range(1,10):
for j in range(1,i+1):
print("%sX%s=%s"%(i,j,i*j),end="\t")
print("")
'''
21.編寫程式用於判斷一個數是否是素數。
所謂素數是指除了能被1和它本身之外不能被其他整 除的數
1 97
2~96
'''
num=int(input("請輸入數字:"))
isSuShu=True #用布林型別做標記
for i in range(2,num):
if num%i==0:
isSuShu=False
break
if isSuShu:
print("是素數!")
else:
print("不是素數!")
'''
22.打印出所有的"水仙花數",
所謂"水仙花數"是指一個三位數,
其各位數字立方和等於該數本身。例如:153 是一個"水仙花數",
因為153=1的三次方+5的三次方+3的三次方。
'''
for i in range(100,1000):
num=i
a=num%10
num//=10
b=num%10
num//=10
c=num
if pow(a,3)+pow(b,3)+pow(c,3)==i: #pow 求冪
print(i)
'''
24.編一程式用以輸出所有各位數碼階乘之和等於其自身的三位數。
如:145=1!+4!+5!
5!=5*4*3*2*1
0!=1
'''
for i in range(100,1000):
num=i
a=num%10
num//=10
b=num%10
num//=10
c=num
asum=1
for ai in range(1,a+1):
asum*=i
bsum=1
for bi in range(1,b+1):
bsum*=bi
csum=1
for ci in range(1,c+1):
csum*=ci
if asum+bsum+csum==i:
print(i)
'''
25.有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...
求出這個數列的前20項之和
'''
sum=0
a=2
b=1
for i in range(20):
sum=sum+a/b
temp=a
a=a+b
b=temp
print(sum)
4.break和continue跳轉語句
帶break的for
name = 'dongGe'
for x in name:
print('----')
if x == 'g':
break
print(x)
帶break的while
i = 0
while i<10:
i = i+1
print('----')
if i==5:
break
print(i)
帶continue的for
i = 0
while i<10:
i = i+1
print('----')
if i==5:
continue
print(i)
注意:break/continue只能用在迴圈中,除此以外不能單獨使用
break/continue在巢狀迴圈中,只對近的一層迴圈起作用