天天看點

python語句塊标記_Python基礎文法學習筆記

一、記憶體管理

變量在動态語言中,無須事先聲明,也不需要制定類型;

程式設計中一般無須關心變量的存亡,也不需要關心記憶體的管理;

Python使用“引用計數”記錄所有對象的引用數

當對象引用數變為0,它就可以被“垃圾回收”GC

計算增加:指派給其他變量就增加引用計數,例如X=3,Y=X

計數減少:函數運算結束時,局部變量就會被自動銷毀,對象引用計數減少;

變量被指派給其他對象。例如:x=3;y=x;x=4

當“引用計數”歸0,即表示該對象不再被使用,垃圾回收機制會定期對“引用計數”标記為0的對象進行釋放。

有關性能的時候,就需要考慮變量的引用問題,但是該釋放記憶體,還是盡量不釋放記憶體,看需求。

##相關問題###

記憶體空洞是如何産出的;

如何規避記憶體空洞;

記憶體回收優化方案;

二、程式控制

順序執行

按照先後順序一條條執行;

分支結構

根據不同的情況判斷,條件滿足執行某條件下的語句;

循環執行

條件滿足就反複執行,不滿足就不執行或不再執行;

if語句

if condition:

代碼塊

condition必須是一個bool類型,這個地方有一個隐式轉換bool 參考“真值表”

真值表

對象/常量

總結

""

False等價布爾值,相當于bool(value)

空集合

空字元串

空字典

空清單

空元組

None對象

"string"

>=1

<=-1

()空元組

[]空清單

{}空字典

None

多分支結構

if…elif…else語句

if condition1:

代碼塊1

elif condition2:

代碼塊2

elif condition3:

代碼塊3

……

else:

代碼塊

分支嵌套舉例:

嵌套結構,可以是分支、循環的嵌套;

可以互相嵌套多層。

score=80

if score<0:print('wrong')else:if score==0:print('egg')elif score <= 100:print('right')else:print('too big')

使用input函數

input函數擷取鍵盤輸入input([prompt])

檢視幫助文檔方法一:

python語句塊标記_Python基礎文法學習筆記

檢視幫助方法二:

python語句塊标記_Python基礎文法學習筆記

注:Python中,下劃線“_”是一個合法的辨別符

同時也是一個特殊辨別符,它指的是上一次output的結果

python語句塊标記_Python基礎文法學習筆記

練習:

1.輸入2個數字,輸出最大數

a = int(input('input a number:'))

b= int(input('input a number:'))if a >b:print(a)else:print(b)

python語句塊标記_Python基礎文法學習筆記

代碼等效(使用三元表達式:真值 if 條件 else 假值):

a = int(input('input a number:'))

b= int(input('input a number:'))print(a) if a > b else print(b)

python語句塊标記_Python基礎文法學習筆記

2.給定一個不超過5位的正整數,判斷其有幾位

#使用if…elif…else…

a = int(input('input a number:') )if a<10:print(1)elif a<100:print(2)elif a<1000:print(3)elif a<10000:print(4)elif a<100000:print(5)

python語句塊标記_Python基礎文法學習筆記

代碼優化方案——折半

newnumber = int(input('number:'))if newnumber >= 100:if newnumber >= 10000:print(5)elif newnumber >= 1000:print(4)else:print(3)else:if newnumber >= 10:print(2)else:print(1)

python語句塊标記_Python基礎文法學習筆記

代碼優化——使用len内置函數:

newnumber = input('number:')

length=len(newnumber)print(length)

python語句塊标記_Python基礎文法學習筆記

循環結構——while循環和for循環

while文法:

while condition:

block

注:當條件滿足condition為True,進入循環體,執行block

while舉例:

flag = 10

whileflag:print(flag)

flag-= 1

python語句塊标記_Python基礎文法學習筆記

注意邊界,Python整型沒有邊界。

如果将上面代碼改為“flag += 1”便進入死循環。

for文法:

for element in iteratable:

block

注:當可疊代對象中有元素可以疊代,進入循環體,執行block

range函數

for和 range函數舉例:列印1~10

for i in range(10):print(i+1)

python語句塊标記_Python基礎文法學習筆記

Range函數簡介:前包後不包,range(起,止,步長)

例:

range(5) ==> range(0,5)==>[0,5] ==> [0,1,2,3,4]

list(range(0,5,2))>>>[0,2,4]

python語句塊标記_Python基礎文法學習筆記
python語句塊标記_Python基礎文法學習筆記

循環中的 continue語句

中斷目前循環的當次執行,繼續下一次循環;

舉例:計算10以内的偶數(for循環)

for i in range(10):if not i%2:print(i)

python語句塊标記_Python基礎文法學習筆記

#引用range函數的步長

for i in range(0,10,2):print(i)

python語句塊标記_Python基礎文法學習筆記

#引用continue

for i in range(10):if i%2:continue

print(i)

python語句塊标記_Python基礎文法學習筆記

#引用位與運算

for i in range(10):if not i&0x01:print(i)

python語句塊标記_Python基礎文法學習筆記

for i in range(10):if i&0x01:continue

print(i)

python語句塊标記_Python基礎文法學習筆記

循環中的 break語句

終止目前循環

舉例:計算1000以内的被7整除的前10個數(for循環)

count =0for i in range (7,1000,7):print(i)

count+= 1

if count >= 10:break

python語句塊标記_Python基礎文法學習筆記

循環continue、break語句總結:

continue和break是循環的控制語句,隻影響目前循環,包括while、for循環;

如果出現循環嵌套,continue和break也隻影響語句所在的那一層循環;

continue和break不是跳出語句塊,是以if cond:break 不是跳出if,而是終止if外的break所在的循環

for i in range(5):

for j in range(5):

if i>j:

print(666)

continue

if i>=j:

print(555)

break

python語句塊标記_Python基礎文法學習筆記

練習:給定一個不超過5位的正整數,判斷該數的位數,依次列印出個位,十位、百位、千位、萬位的數字

number = int(input('>>>'))

number*= 10

while(number//10)!=0:

number//=10

print(number%10)

python語句塊标記_Python基礎文法學習筆記

number = int(input('>>>'))

numberV=len(str(number))fori inrange(numberV):print(number%10)

number=number//10

python語句塊标記_Python基礎文法學習筆記

将上面的結果反過來列印:

number = int(input('>>>'))

numberV=len(str(number))

c=numberfor i inrange(numberV):

v=10**(numberV-i-1)

m= c //vprint(m)

c-= v*m

python語句塊标記_Python基礎文法學習筆記

循環else子句文法

while condition:

block

else:

block

for element in iteratable:

block

else:

block

##如果循環正常的執行結束,就執行else子句;

##如果使用break終止,else子句不會執行。

for i in range(5):print(i)#if i > 3:

#break

#continue

else:print('OK')

python語句塊标記_Python基礎文法學習筆記

練習:

一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?

程式分析:

假設該數為 x。

1、則:x + 100 = n2, x + 100 + 168 = m2

2、計算等式:m2 - n2 = (m + n)(m - n) = 168

3、設定: m + n = i,m - n = j,i * j =168,i 和 j 至少一個是偶數

4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要麼都是偶數,要麼都是奇數。

5、從 3 和 4 推導可知道,i 與 j 均是大于等于 2 的偶數。

6、由于 i * j = 168, j>=2,則 1 < i < 168 / 2 + 1。

7、接下來将 i 的所有數字循環計算即可。

for i in range(1,85):if 168 % i ==0:

j= 168 /i;if i > j and (i + j) % 2 == 0 and (i - j) % 2 ==0 :

m= (i + j) / 2n= (i - j) / 2x= n * n - 100

print(x)

python語句塊标記_Python基礎文法學習筆記

練習:列印斐波那契數列

程式分析:斐波那契數列(Fibonacci sequence),又稱黃金分割數列。

指的是這樣一個數列如:0、1、1、2、3、5、8、13、21、34、……

程式分析:

F0 =0(n=0)F1 =1(n=1)Fn=F[n-1]+F[n-2](n=>2)

方法一:

deffib(n):

a,b= 1,1

for i in range(n-1):

a,b= b,a+breturna#輸出了第10個斐波那契數列

print(fib(10))

python語句塊标記_Python基礎文法學習筆記

方法二:使用遞歸

#使用遞歸

deffib(n):if n==1 or n==2:return 1

return fib(n-1)+fib(n-2)#輸出了第10個斐波那契數列

print(fib(10))

python語句塊标記_Python基礎文法學習筆記

練習:列印一個邊長為N的正方形

n = 5

print('*'*n)for i in range(n-2):print('*'+' '*(n-2)+'*')print('*'*n)

python語句塊标記_Python基礎文法學習筆記

#邊長=3,則-1 0 -1 =>range(-1,2)#邊長=4,則-2 -1 0 1 =>range(-2,2)#邊長=5,則-2 -1 0 1 2 =>range(-2,3)

n = 5e= -n//2

for i in range(e,n+e):if i == e or i == n+e-1:print('*'*n)else:print('*' + ' '*(n-2) + '*')

python語句塊标記_Python基礎文法學習筆記

練習:求100以内所有奇數的和

b =0for i in range(1,100,2):

b+=iprint(b)

python語句塊标記_Python基礎文法學習筆記

練習:列印九九乘法口訣表

for i in range(1,10):for o in range(1,i+1):print('{}*{}={}\t'.format(i,o,i*o),end='')print()

python語句塊标記_Python基礎文法學習筆記