日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 编辑注意点

發布時間:2024/4/13 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 编辑注意点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

文本編輯 Python:

絕對不能用Word和Windows自帶的記事本。

(1)Word保存的不是純文本文件

(2)記事本會自作聰明地在文件開始的地方加上幾個特殊字符(UTF-8 BOM),結果會導致程序運行出現莫名其妙的錯誤。

?

像.exe文件,直接運行 ?.py文件:

(1)在Windows下不能直接運行。 在MAC、Linux下可直接運行

(2)方法:

? ? ? step1:在.py文件的第一行加上一個特殊的注釋: ?#!/usr/bin/env python3

? ? ? step2:通過命令給hello.py以執行權限: ??$ chmod a+x hello.py

?

?

# ? ? ? ?: ? ?以#開頭的語句是注釋,注釋是給人看的,可以是任意內容,解釋器會忽略掉注釋。

:冒號: ?當語句以冒號:結尾時,縮進的語句視為代碼塊 ?。約定俗成:使用4個空格的縮進

Python程序是大小寫敏感的,如果寫錯了大小寫,程序會報錯

?

如果字符串內部既包含'又包含" 。則可以用?轉義字符\來標識(放置在 ' 或 ” ?之前)比如: ?'I\'m \"OK\"!' ??表示的字符串內容是 ?I'm "OK"! ?。

?

輸入多行內容時,可以?'''...'''的格式表示多行內容。 如在cmd窗口中輸入 print('''a 回車 ?則會出現... 示意繼續輸入。結束時,以輸入''' 結束。

?

python 是動態語言,變量本身類型不固定,可以反復賦值

?

在Python中,有兩種除法:

(1)一種除法是/ ?。/除法計算結果是浮點數,即使是兩個整數恰好整除,結果也是浮點數:?9 / 3 》3.0

(2)一種除法是//,稱為地板除,兩個整數的除法仍然是整數 :10 /?3 》3

?

Python 余數運算。 % 。可以得到兩個整數相除的余數:10 % 3 ?》1

?

字符串與編碼

len() :計算str包含多少個字符,可以用len()函數: ? ??len(b'ABC')?》 3

?

?

由于Python源代碼也是一個文本文件,所以,當你的源代碼中包含中文的時候,在保存源代碼時,就需要務必指定保存為UTF-8編碼。當Python解釋器讀取源代碼時,為了讓它按UTF-8編碼讀取,我們通常在文件開頭寫上這兩行:

#!/usr/bin/env python3 告訴Linux/OS X系統,這是一個Python可執行程序,Windows系統會忽略這個注釋; # -*- coding: utf-8 -*- 告訴Python解釋器,按照UTF-8編碼讀取源代碼,否則,你在源代碼中寫的中文輸出可能會有亂碼。申明了UTF-8編碼并不意味著你的.py文件就是UTF-8編碼的,必須并且要確保文本編輯器正在使用UTF-8 without BOM編碼:
(1)% 運算符: 是用來格式化字符串的 (2)常見占位符:

%d ? ?整數 ? ?: ??

? ? ? ? ? ??%d?普通的整數輸出;

? ? ? ? ? ? ?%2d整數輸出,整數的寬度是2位,若不足兩位,左邊補空格;

? ? ? ? ? ? ?%02d整數輸出,整數的寬度是2位,若不足兩位,左邊補0;

? ? ? ? ? ? ?%.2d?整數輸出,整數的有效數字是2位。

>>> '%2d-%02d' % (3, 1) ' 3-01'

  


%f ? ? 浮點數
%s ? 字符串
%x ? 十六進制整數

(3)字符串里面的%是一個普通字符怎么辦?這個時候就需要轉義,用%%來表示一個%:?'growth rate: %d %%' % 7 ? ? >>> ?'growth rate: 7 %'

?

?

函數

for x in ...循環:是把每個元素代入變量x,然后執行縮進塊的語句。?for a ?in list:

range()函數:range(5)生成的序列是從0開始小于5的整數

?

列表list (有序的集合) 可變

創建數組 ? ? ??classmates = ['Michael', 'Bob', 'Tracy']

len()函數可以獲得list元素的個數(如果一個list中一個元素也沒有,就是一個空的list,它的長度為0) ? ? ??>>> len(classmates)?

用索引來訪問list中每一個位置的元素,記得索引是從0開始的 ? ? ?>>> classmates[0]?'Michael'

用?-1做索引,直接獲取最后一個元素 ? ? ??>>> classmates[-1]

往list中追加元素到末尾 ??>>> classmates.append('Adam')

把元素插入到指定的位置,比如索引 號為1的位置: ??>>>?classmates.insert(1, 'Jack')

刪除list末尾的元素 ? ?>>> classmates.pop()

要刪除指定位置的元素,用pop(i)方法,其中i是索引位置 ? ?>>> classmates.pop(1)

要把某個元素替換成別的元素,可以直接賦值給對應的索引位置: ??>>> classmates[1] = 'Sarah'

list元素也可以是另一個list, ? ? ? ?>>> s = ['python', 'java', ['asp', 'php'], 'scheme'] ?。s[2]又是一個list。要拿到'php'可以寫p[1]或者s[2][1]

?

元組tuple ?(有序列表) ?不可變

?

tuple一旦初始化就不能修改

用括號()可以表示tuple ? ? ? ? ?>>> classmates = ('Michael', 'Bob', 'Tracy')

如果要定義一個空的tuple ? ??>>> t = ()

如果要定義一個空的tuple ? ??>>> t = (1) ? ? ? ?>>> t = (1,)

tuple元素,指向永遠不變 。但元素中如果有list, 則該list 的值是可變的。

?

例:打印數組信息

#!/user/bin/env python3 # -*- coding: utf-8 -*-L = [['Apple', 'Google', 'Microsoft'],['Java', 'Python', 'Ruby', 'PHP'],['Adam', 'Bart', 'Lisa'] ] print('輸出1:%s, 輸出2: %s ,輸出3: %s' %(L[0][0],L[1][1],L[2][2]))

  

?

條件判斷

if 條件:do else: do

  

if ?else的判斷是很粗略的,完全可以用elif做更細致的判斷。

elif是else if的縮寫,完全可以有多個elif,所以if語句的完整形式就是:

if <條件判斷1>:<執行1> elif <條件判斷2>:<執行2> elif <條件判斷3>:<執行3> else:<執行4>

  

if語句執行有個特點,它是從上往下判斷,如果在某個判斷上是True,把該判斷對應的語句執行后,就忽略掉剩下的elif和else。即若第一個條件判斷成功,就不會判斷剩下的條件。

?

if判斷條件還可以簡寫,比如寫:

if x:print('True')  

只要x是非零數值、非空字符串、非空list等,就判斷為True,輸出print。 ?否則為False。

?

循環(for .in . ?\ ?while)

for x in ...循環:把每個元素代入變量x,然后執行縮進塊的語句

while循環:只要條件滿足,就不斷循環,條件不滿足時退出循環。

?

?

break? :作用是在循環過程中直接退出循環。 提前結束循環。

continue:?在循環過程中,也可以通過continue語句,跳過本輪循環,直接開始下一次循環。

ps:如果程序陷入“死循環”,可以Ctrl+C退出程序,或者強制結束Python進程。

?

字典 dict (全稱:dictionary/map)

把數據放入dict的方法:

(1)初始化時指定: ex: d={'aa': 11, 'bb': 22, 'cb': 33}

(2)通過key放入: d['dd']=44

?

?

要避免key不存在的錯誤:

(1)通過in判斷key是否存在:'dd' in d >>存在則輸出true ,否則false

(2)通過dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value

d.get('ddddd') #key不存在,則不輸出結果 。key存在,則輸出value值。
d.get('dddd',-1) # 同上

?

一個key只能對應一個value.多次對一個key放入value,后面的值會把前面的值沖掉

刪除key:用pop(key)方法刪除key,對應的value也會從dict中刪除 d.pop('dd')


key必須是不可變對象。因為dict根據key來計算value的存儲位置。這種算法稱為哈希算法(Hash)。

?

set集合
set 是一組key的集合,但不存儲value。(set的key不能重復。)

s=set([1,2,3]) 創建set(提供list作為輸入集合)

s.add(dd) 可以添加元素

s.remove(dd) 可以刪除元素

?

set中重復的元素會被自動過濾。

set可以看成數學意義上的無序和無重復元素的集合,兩個set可以做數交集(s1 & s2)、并集(s1 | s2)等操作

set和dict的唯一區別僅在于沒有存儲對應的value

?

函數

定義函數: ?使用def語句,依次寫出函數名、括號、括號中的參數和冒號:,然后,在縮進塊中編寫函數體,函數的返回值用return語句返回。

?

def my_abs(x):if not isinstance(x, (int, float)):raise TypeError('bad operand type') #如果傳入錯誤的參數類型,函數就可以拋出一個錯誤:bad operand typeif x >= 0:return xelse:return -x

?

?

?

?

?

位置參數

對于power(x,n)函數,參數x、n都是位置參數。調用函數時,傳入的兩個值按照位置順序依次賦給參數x和n
def power(x, n):
s = 1
while n > 0:
n = n - 1
s = s * x
return s

?

(2)默認參數

默認參數可以簡化函數的調用。降低調用函數的難度:

a.必選參數在前,默認參數在后,否則Python的解釋器會報錯
b.函數有多個參數時,把變化大的參數放前面,變化小的參數放后面。變化小的參數就可以作為默認參數 (注:當值與默認參數不符時,再進行指定)
c.默認參數一定要用不可變對象,如果是可變對象,程序運行時會有邏輯錯誤!

?

(3)可變參數 *args

可變參數允許你傳入0個或任意個參數,這些可變參數在函數調用時自動組裝為一個tuple。

定義可變參數有2種方案:

方案一: ? ?將參數作為一個list 或者 tuple傳進來 。定義如下,與普通函數無差別,但是調用的時候,需要組裝lst

def calc(numbers): sum = 0 for n in numbers: sum = sum + n * n return sum

方案二: ? ?在參數前面加了一個*號。則調用時,可以傳入任意個參數。 ex: calc(1, 2) >>> 5

def calc(*numbers): sum = 0 for n in numbers: sum = sum + n * n return sum

?

(4)關鍵字參數 **kw

關鍵字參數允許你傳入0個或任意個含參數名的參數,這些參數在函數內部自動組裝為一個dict。 可以擴展函數的功能。

定義: def person(name, age, **kw):print('name:', name, 'age:', age, 'other:', kw)

?

調用: >>> person('Michael', 30) #只傳必選參數 name: Michael age: 30 other: {}
>>> person('Bob', 35, city='Beijing') #傳入1個關鍵字參數 name: Bob age: 35 other: {'city': 'Beijing'} >>> person('Adam', 45, gender='M', job='Engineer') #傳入2個關鍵字參數 name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}

(5)命名關鍵字參數

限制調用者可以傳入的參數名,同時可以提供默認值。

和關鍵字參數**kw不同,命名關鍵字參數需要一個特殊分隔符*,*后面的參數被視為命名關鍵字參數 ?(若沒有* ,則定義的是位置參數)

def person(name, age, *, city, job):print(name, age, city, job)

(99)參數組合

參數組合使用時,參數的順序必須是:必選參數、默認參數、可變參數、命名關鍵字參數和關鍵字參數。

def f1(a, b, c=0, *args, **kw): print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)

?

?

遞歸函數

所有的遞歸函數都可以寫成循環的方式。但循環的邏輯不如遞歸清晰。

遞歸函數 ?fact(n) = n! =?1 *?2 *?3 *?... * (n-1) * n = (n-1)! * n = fact(n-1) * n

# fact(n)用遞歸的方式寫出來 def fact(n):if n==1:return 1return n * fact(n - 1)

?

?

漢諾塔?的移動也可以看做是遞歸函數。

思路:
對柱子編號為a, b, c,將所有圓盤從a移到c可以描述為:?
- 如果a只有一個圓盤,可以直接移動到c;?
- 如果a有N個圓盤,可以看成a有1個圓盤(底盤) + (N-1)個圓盤,首先需要把 (N-1) 個圓盤移動到 b,然后,將 a的最后一個圓盤移動到c,再將b的(N-1)個圓盤移動到c。 #編寫一個函數,給定輸入 n, a, b, c,打印出移動的步驟 def move(n, a, b, c):if n ==1:print a, '-->', celse:move(n-1, a, c, b)move(1, a, b, c) # 或 print a, '-->', cmove(n-1, b, a, c)# 調用時,輸入如 move(2,'A','B','C')。可參看結果

?

轉載于:https://www.cnblogs.com/ericazy/p/7229536.html

總結

以上是生活随笔為你收集整理的Python 编辑注意点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。