基礎程式設計思想
阿新 • • 發佈:2018-11-28
演算法+資料結構=程式
那麼,當我們在某些特定的條件下應該用什麼程式設計思路??
1、折半:當我們需要去判斷一個數需要去對應哪個區間的時候,且能找到中間區域
#輸入一個數字,判斷它屬於哪個數字區間
n=int(input('>>>'))
if n > 100:
pass if n > 1000 else pass
else:
pass if n >10 else pass
2、輸入次數限定時:for 迴圈指定迴圈次數
for _ in range(n): #n為指定輸入次數 a=input('>>>')
3、輸入次數不限定時:while迴圈不限定次數,只需要指定條件或者break條件
while True:
a = input('>>>')
if a == '':
break #輸入完結條件為:輸入為空
pass
4、分支語句判定大小順序:先指定第一位數,再去對比餘下的數
a=[] for i in range(3): a.append(int(input('>>>'))) if a[0]>a[1] and a[0]>a[2]: out=[0,1,2] if a[1]>a[2] else out=[0,2,1] if a[1]>a[0] and a[1]>a[2]: out=[1,0,2] if a[0]>a[2] else out=[1,2,0] if a[2]>a[0] and a[2]>a[1]: out=[2,0,1] if a[0]>a[1] else out=[2,1,0] for i in out: print(a[i],end=',')
5、優化print列印時,使用format函式的對齊:下面為列印右上部分九九乘法表
for i in range(1,10):
for j in range(1,10):
print('{0}*{1}={2:<{3}}'.format(j, i, i*j, 2 if j<4 else 3),end='') if i <= j else print(' '*(6 if j<4 else 7), end ='')
print()
6、標記
a=0 #100以內的斐波那契數列 b=1 f=False print(1,end=' ') while a+b<=100: if not f: print(a+b,end=' ') a=a+b f=True else: print(a+b,end=' ') b=a+b f=False
7、迭代
#斐波那契數列
a=1
b=1
print(0,1,end=' ')
while 1:
c=a+b
b=a
a=c
print(b,end=' ')
if c>100:
break
8、列印圖形時,如果圖形對稱
#列印菱形
num = int(input('>>>'))
num2 = num//2
for i in range(-num2,num2+1):
x= -i if i < 0 else i
print(' '*x+'*'*(num-2*x))
9、列印圖形時,如果能代入座標系:方程式的交集
#列印行數為7的菱形
for x in range(-3,4):
for y in range(-3,4):
if y<=0:
if y>=abs(x)-3: #方程y<=0 與y=abs(x)-3相交
print('*',end='')
else:
print(' ',end='')
else:
if y<=3-abs(x): #方程y>0 與y=3-abs(x)相交
print('*',end='')
else:
print(' ',end='')
print()
10、空間複雜度優化:單列表列印楊輝三角。
#楊輝三角
n=5
a=[1]*n
for i in range(n): #n=[0,n]
offect = -(n-i)
z=1
for j in range(1,(i//2)+1):
tmp = z+a[j]
z=a[j]
a[j]=tmp
if i != 2j:
a[offect-j]=tmp
print(a[:i+1])
11、時間複雜度優化:(使用已計算出的素數,用空間換時間)
#10W以內的素數
n=100000
primenumber = [2,3]
a=5
step=2
while a<=n:
temp=a**0.5
for i in primenumber:
if a % i == 0 :
break
if i>temp:
primenumber.append(a)
break
a += step
step= 4 if step==2 else 2
print(len(primenumber))
12、新建一列表,使用index作為數字,列表中填充0做為這個數字出現的次數
import random
a=[]
for _ in range(10):
a.append(random.randint(1,20))
print(a)
b=[0]*21
for i in a:
b[i]=b[i]+1
echolist=[]
singlelist=[]
for j in range(len(b)):
if b[j] == 1:
singlelist.append(j)
elif b[j] > 1:
echolist.append(j)
print('{1} single number:{0}'.format(singlelist,len(singlelist)))
print('{1} echo number:{0}'.format(echolist,len(echolist)))
以上均為個人學習體會,如有錯誤,請指正。