順序,分支,循環結構
條件判斷語句if
1)if…else…
2) if…elif…else
注意:
1)python中不支持switch…case語句
2)注意縮進!
3)區間范圍內允許連續比較:
if 1<=2<=3
if 3>=2>=1
if 2>=1 and 2<=3
3)三元表達式:
x=num1 if num1>num2 else num2
條件成立,返回num1,否則返回num2
4)隱式類型轉化
if后面需要的是一個bool類型的值;如果if后面不是bool類型,會自動轉換為bool類型
#1
ticket=input('Y/N')
if ticket=='Y':print('ok')
else:print('no')
題目:
pass關鍵字
沒有任何作用,進行占位,代碼暫時不知道如何寫時,以免程序縮進出錯,保持語句完整性
#1
ticket=input(‘Y/N’)
if ticket==‘Y’:
print(‘ok’)
else:
pass
random.randint函數
r = random.randint(a,b)
生成【a,b】之間的隨機整數
eg:
r = random.randint(0, 2)
生成0,1,2
循環語句while
while xx:
print()
注意:
Python里的循環有 while 循環和 for 循環。
注:Python里不支持do…while 循環。
代碼:
#sys.exit()使系統中止
name=''
while True:print('請輸入名稱:')name=input()if name=='dq':print('ok')sys.exit()
題目:
for語句
代碼
#for循環1
i=1
for i in range(2):print('**')#for循環2
for a in range(0,-3,-1):#從0開始,一次減1,直到-2【0,-3)print(a)
for中也有break和continue
示例:九九乘法表
for i in range(1,10,1):for j in range(1,i+1,1):print(i,'*',j,'=',i*j,sep='',end='\t')print('\n')
題目:
1)
range(-1,5):[-1,5),步長為1
2)
【0,3),步長為1
0,1,2
0的0次方為1,所有數的0次方為1
for…else語句
沒有執行for中的break時會執行else
代碼示例:
統計101-200中素數的個數,并且輸出所有的素數。(素數又叫質數,即只能被1和它本身整除的數)
count=0
for i in range(101, 201, 1):for j in range(2,int(i/2),1):#減少循環if i % j == 0:#合數break#進入下一個循環else:count+=1print(i,end='\t')
print('\n')
print('count=',count,sep='',end='\n')
求一個三位數的個位十位百位的值
定義一個三位數
a = 123456789
百位數: a//100%10
十位數: a//10%10
個位數: a//1%10
取倒數第幾位,就是a//位數%10## 練習1-兩個數相減```c
# 輸入兩個整數,如果兩個數相減的結果為奇數則輸出該結果,否則輸出提示信息“結果不是奇數”。
# print('題目3',end='\n')
# num1,num2=input('輸入整數1'),input('輸入整數2')
# num1,num2=int(num1),int(num2)
# num=num1-num2
# if num%2==0:
# print('結果不是奇數',end='\n')
# else:
# print(int(num), end='\n')
```
## 練習2-使用while循環輸出[0,100]內所有偶數```c
# 使用while循環輸出[0,100]內所有偶數。
# print('題目5', end='\n')
# i = 0
# flag = 1
# while i <= 100:
# if i % 2 == 0:
# print(i, end='\t')
# i += 1
# print('\n')
```
## 練習3-求一個數是幾位數
使用len()函數求解字符串長度```c
# 輸入任意一個正整數,求它是幾位數。
# print('題目7',end='\n')
# num=input('請輸入一個正整數:')
# #將輸入的字符串轉換為整數,則能夠去除0089前面的0,再轉換回字符串求解字符長度即可
# num=len(str(int(num)))
# print(('輸入為%d位數')%(num))
```
## 練習4-打印三位水仙花數```c
# 打印所有水仙花數。(三位數,各個位的數的立方和等于該數)
# print('題目8', end='\n')
# for i in range(100,1000,1):
# if (i//100%10)**3+(i//10%10)**3+(i/1%10)**3==i:
# print(i,end='\t')
# print('\n')
```
## 練習5-不斷輸入數字```c
# 寫一個程序可以不斷輸入數字,若輸入的為0,打印“程序結束”后,結束該程序。
# print('題目9', end='\n')
# i=1
# while i:
# i=input('請輸入數字:')
# i=int(i)
# print('程序結束')
```
## 練習6-斐波那契數for循環```c
# 求斐波那契數列中第n個數的值,n是正整數。(說明:斐波那契數列是這樣的:1,1,2,3,5,8,13,21,34,…)
# print('題目11', end='\n')
# n = int(input('請輸入n:'))
# n1 = n2 = 1
# result = 1
# for i in range(3, n + 1, 1):
# result = n1 + n2
# n1=n2#移動
# n2=result
# print('第%d個數的值是%d'%(n,result), end='\n')
```
## 練習7-百馬百擔for鑲嵌循環窮舉法```c
# “百馬百擔”問題:一匹大馬能馱3擔貨,一匹中馬能馱2擔貨,兩匹小馬能馱1擔貨,如果用100匹馬馱100擔貨,問有大中小馬各幾匹?(提示:窮舉法)
# print('題目12', end='\n')
# for n1 in range(1, 34):#大馬
# for n2 in range(2, 51):#中馬
# for n3 in range(1, 101):#小馬
# if n1 * 3 + n2 * 2 + n3 * 0.5 == 100 and n1+n2+n3==100:
# print('大馬%d 中馬%d 小馬%d' % (n1, n2, n3), end='\n')```
## 練習8-對折紙達到珠穆朗瑪峰的高度
1m=10dm=100cm=1000mm
所以0.08mm=0.00008m
```c
# 一張紙的厚度大約是0.08mm,對折多少次后能達到珠穆朗瑪峰的高度(8848.13m)。
# print('題目13', end='\n')
# paper=0.00008
# all=8848.13
# count=0
# while paper<all:
# paper*=2#每對折一次,紙的厚度變為兩倍
# count+=1
# print(('對折%d次')%(count),end='\n')
```