這是math模塊的一個函數(shù)
站在用戶的角度思考問題,與客戶深入溝通,找到怒江州網(wǎng)站設(shè)計與怒江州網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、虛擬主機、企業(yè)郵箱。業(yè)務(wù)覆蓋怒江州地區(qū)。
pow() 源于英文power,返回給定數(shù)字的乘冪
所以我們執(zhí)行math.pow()示例:
注意:math 模塊則會把參數(shù)轉(zhuǎn)換為 float。
math是非常常用的數(shù)學(xué)計算包,其中math.pow()語法如下
參數(shù)說明:
等同于寫法
但注意math函數(shù)返回的是浮點數(shù),后者可能返回整數(shù)
其他常用的數(shù)學(xué)函數(shù)有:
python2 有cmp(x,y)函數(shù),python3移除了cmp,新增了 operator模塊,提供了如下比較方法
作為比較函數(shù)
在處理數(shù)字時使用數(shù)學(xué)函數(shù)能更高效的獲取計算結(jié)果。
對基礎(chǔ)運行環(huán)境有疑問的,推薦參考: python函數(shù)深入淺出 0.基礎(chǔ)篇
使用鍵盤輸入值并不是編輯表中值的唯一方式。在某些情況下,為了設(shè)置字段值,可能要對單條記錄甚至是所有記錄執(zhí)行數(shù)學(xué)計算。您可以對所有記錄或選中記錄執(zhí)行簡單計算和高級計算。此外,還可以在屬性表中的字段上計算面積、長度、周長和其他幾何屬性。以下各部分包括使用字段計算器的若干示例。使用 Python、SQL 和 Arcade 執(zhí)行計算。
本主題著重于基于 Python 的計算字段示例。要了解有關(guān) Arcade 表達(dá)式的詳細(xì)信息,請參閱 ArcGIS Arcade 指南。要了解有關(guān) SQL 表達(dá)式的詳細(xì)信息,請參閱計算字段。
注:
Python 強制將縮進作為語法的一部分。請使用兩個或四個空格來定義每個邏輯級別。將語句塊的開頭和結(jié)尾對齊并且保持一致。
Python 計算表達(dá)式字段將使用驚嘆號 (!!) 括起。
命名變量時,請注意 Python 區(qū)分大小寫,因此 value 不同于 Value。
輸入語句后,如果想將其寫入文件,請單擊導(dǎo)出。導(dǎo)入按鈕將提示您查找和選擇一個現(xiàn)有的計算文件。
簡單計算
僅通過一個短表達(dá)式就可以計算出多種計算結(jié)果。
簡單字符串示例
一系列 Python 字符串函數(shù)均支持使用字符串,包括 capitalize、rstrip 和 replace。
將 CITY_NAME 字段中字符串的首字母大寫。
!CITY_NAME!.capitalize()
去掉 CITY_NAME 字段中自字符串結(jié)尾起的所有空白區(qū)。
!CITY_NAME!.rstrip()
將 STATE_NAME 字段中的“california”全部替換為“California”。
!STATE_NAME!.replace("california", "California")
在 Python 中,字符串字段中的字符可以通過索引和分割操作進行訪問。索引操作將在索引位置提取字符,而分割操作則會提取一組字符。在下表中,假設(shè) !fieldname! 是值為 "abcde" 的字符串字段。
示例
說明
結(jié)果
!fieldname![0]
第一個字符
"a"
!fieldname![-2]
倒數(shù)第二個字符
"d"
!fieldname![1:4]
第二、三和四個字符
"bcd"
Python 也支持使用 format() 方法的字符串格式。
將合并后的 FieldA 和 FieldB 以冒號分隔開。
"{}:{}".format(!FieldA!, !FieldB!)
常見 Python 字符串操作
簡單數(shù)學(xué)示例
Python 提供了處理數(shù)字的工具。Python 也支持一些數(shù)值和數(shù)學(xué)函數(shù),包括 math、cmath、decimal、random、itertools、functools 和 operator。
運算符
說明
示例
結(jié)果
x + y
x 加上 y
1.5 + 2.5
4.0
x - y
x 減去 y
3.3 - 2.2
1.1
x * y
x 乘以 y
2.0 * 2.2
4.4
x / y
x 除以 y
4.0 / 1.25
3.2
x // y
x 除以 y(向下取整除法)
4.0 // 1.25
3.0
x % y
x 模 y
8 % 3
2
-x
x 的負(fù)數(shù)表達(dá)式
x = 5
-x
-5
+x
x 不變
x = 5
+x
5
x ** y
以 x 為底,以 y 為指數(shù)的冪
2 ** 3
8
乘
!Rank! * 2
根據(jù)給定的半徑字段計算球體的體積。
4.0 / 3.0 * math.pi * !Radius! ** 3
舊版本:
在 ArcGIS Pro 中,使用的是 Python 3,在 ArcGIS Desktop 中,使用的 Python 2。Python 2 使用的是整型數(shù)學(xué)計算,這就意味著兩個整型值相除將始終生成整型值 (3 / 2 = 1)。在 Python 3 中,兩個整型值相除將生成浮點型值 (3 / 2 = 1.5)。
Python 內(nèi)置函數(shù)
Python 包含多個可用的內(nèi)置函數(shù),包括 max、min、round 和 sum。
Python 內(nèi)置函數(shù)
通過字段列表計算每條記錄的最大值。
max([!field1!, !field2!, !field3!])
通過字段列表計算每條記錄的總和。
sum([!field1!, !field2!, !field3!])?使用代碼塊
通過 Python 表達(dá)式和代碼塊參數(shù)可執(zhí)行以下操作:
在表達(dá)式中應(yīng)用任意 Python 函數(shù)。
訪問地理處理函數(shù)和對象。
訪問要素幾何的屬性。
訪問新的隨機值運算符。
使用 if-then-else 邏輯對值進行重分類。
表達(dá)式類型
代碼塊
Python 3
支持 Python 功能。使用 Python 函數(shù) (def) 表示代碼塊。在適當(dāng)?shù)那闆r下,幾何屬性將通過地理處理對象表示(如點對象)。
Arcade
支持 Arcade 功能。
SQL
支持 SQL 表達(dá)式。
執(zhí)行 SQL 表達(dá)式可以更好地支持使用要素服務(wù)和企業(yè)級地理數(shù)據(jù)庫的計算,尤其是在性能方面。使用該表達(dá)式可以將單次請求設(shè)置為要素服務(wù)或數(shù)據(jù)庫,而不必一次執(zhí)行一個要素或一行的計算。
舊版本:
在 ArcGIS Desktop 中,計算字段工具支持 VB、PYTHON 和 PYTHON_9.3 表達(dá)式類型。VB 表達(dá)式類型,在某些產(chǎn)品中受支持,但在 64 位產(chǎn)品中不受支持,其中包括 ArcGIS Pro。
出于相后兼容性考量,ArcGIS Pro 中仍然支持 PYTHON 和 PYTHON_9.3 關(guān)鍵字,但是不會作為選擇列出。使用這些關(guān)鍵字的 Python 腳本將可繼續(xù)使用。
Python 3 表達(dá)式類型與舊版 PYTHON_9.3 關(guān)鍵字的唯一區(qū)別在于 Python 3 會將日期字段中的值作為 Python datetime 對象返回。
注:
Python 3 表達(dá)式類型與隨 ArcGIS Pro 安裝的 Python 版本無關(guān)。這只是歷史上的第三個 Python 相關(guān)關(guān)鍵字(繼 PYTHON 和 PYTHON_9.3 之后。
各 Python 函數(shù)可通過 def 關(guān)鍵字定義,關(guān)鍵字后為函數(shù)名稱及函數(shù)的輸入?yún)?shù)??删帉?Python 函數(shù),使 Python 函數(shù)能夠接受任何數(shù)量的輸入?yún)?shù)(也可以沒有任何參數(shù))。函數(shù)將通過 return 語句返回值。函數(shù)名稱可由您自行選取(不得使用空格,也不得以數(shù)字開頭)。
注:
如果函數(shù)未通過 return 語句顯式返回值,則函數(shù)將返回 None。
注:
請牢記,Python 強制要求將縮進作為語法的一部分。請使用四個空格來定義每個邏輯級別。將語句塊的開頭和結(jié)尾對齊并且保持一致。
代碼示例 - 數(shù)學(xué)
在使用以下數(shù)學(xué)示例時,請假設(shè)表達(dá)式類型為 Python 3。
將字段的值四舍五入為保留兩位小數(shù)。
表達(dá)式:
round(!area!, 2)
通過 math 模塊將米轉(zhuǎn)換成英尺。以轉(zhuǎn)換值為底,以 2 為指數(shù)進行冪運算,然后再乘以 area。
表達(dá)式:
MetersToFeet((float(!shape.area!)))
代碼塊:
import math
def MetersToFeet(area):
return math.pow(3.2808, 2) * area?通過 Python 邏輯計算字段
可以使用 if、else 和 elif 語句將邏輯模式包含在代碼塊中。
按照字段值進行分類。
表達(dá)式:
Reclass(!WELL_YIELD!)
代碼塊:
def Reclass(WellYield):
if (WellYield = 0 and WellYield = 10):
return 1
elif (WellYield 10 and WellYield = 20):
return 2
elif (WellYield 20 and WellYield = 30):
return 3
elif (WellYield 30):
return 4?代碼實例 - 幾何
除以下代碼示例外,請參閱下方的“幾何單位轉(zhuǎn)換”部分,以了解有關(guān)轉(zhuǎn)換幾何單位的詳細(xì)信息。
計算某要素的面積。
表達(dá)式:
!shape.area!
計算某要素的最大 x 坐標(biāo)。
表達(dá)式:
!shape.extent.XMax!
計算某要素中的折點數(shù)。
表達(dá)式:
MySub(!shape!)
代碼塊:
def MySub(feat):
partnum = 0
# Count the number of points in the current multipart feature
partcount = feat.partCount
pntcount = 0
# Enter while loop for each part in the feature (if a singlepart
# feature, this will occur only once)
while partnum partcount:
part = feat.getPart(partnum)
pnt = part.next()
# Enter while loop for each vertex
while pnt:
pntcount += 1
pnt = part.next()
# If pnt is null, either the part is finished or there
# is an interior ring
if not pnt:
pnt = part.next()
partnum += 1
return pntcount
將點要素類中每個點的 x 坐標(biāo)平移 100。
表達(dá)式:
shiftXCoordinate(!SHAPE!)
代碼塊:
def shiftXCoordinate(shape):
shiftValue = 100
point = shape.getPart(0)
point.X += shiftValue
return point?幾何單位轉(zhuǎn)換
幾何字段的面積和長度屬性可通過用 @ 符號表示的單位類型進行修改。
面積測量單位關(guān)鍵字:
ACRES | ARES | HECTARES | SQUARECENTIMETERS | SQUAREDECIMETERS | SQUAREINCHES | SQUAREFEET | SQUAREKILOMETERS | SQUAREMETERS | SQUAREMILES | SQUAREMILLIMETERS | SQUAREYARDS | SQUAREMAPUNITS | UNKNOWN
線性測量單位關(guān)鍵字:
CENTIMETERS | DECIMALDEGREES | DECIMETERS | FEET | INCHES | KILOMETERS | METERS | MILES | MILLIMETERS | NAUTICALMILES | POINTS | UNKNOWN | YARDS
注:
如果數(shù)據(jù)存儲在地理坐標(biāo)系中且具有線性單位(例如英尺),則會通過測地線算法轉(zhuǎn)換長度計算的結(jié)果。
警告:
轉(zhuǎn)換地理坐標(biāo)系中數(shù)據(jù)的面積單位會生成不正確的結(jié)果,這是由于沿 globe 的十進制度并不一致。
計算某要素的長度(以碼為單位)。
表達(dá)式:
!shape.length@yards!
計算某要素的面積(以英畝為單位)。
表達(dá)式:
!shape.area@acres!
測地線面積和長度也可以通過帶 @(后跟測量單位關(guān)鍵字)的 geodesicArea 和 geodesicLength 屬性進行計算。
計算某要素的測地線長度(以碼為單位)。
表達(dá)式:
!shape.geodesicLength@yards!
計算某要素的測地線面積(以英畝為單位)。
表達(dá)式:
!shape.geodesicArea@acres!?代碼實例 - 日期
日期和時間可使用 datetime 和 time 模塊進行計算。
計算當(dāng)前日期。
表達(dá)式:
time.strftime("%d/%m/%Y")
計算當(dāng)前日期和時間。
表達(dá)式:
datetime.datetime.now()
計算的日期為 2000 年 12 月 31 日。
表達(dá)式:
datetime.datetime(2000, 12, 31)
計算當(dāng)前日期和字段中的值之間的天數(shù)。
表達(dá)式:
(datetime.datetime.now() - !field1!).days
通過向字段中的日期值添加 100 天來計算日期。
表達(dá)式:
!field1! + datetime.timedelta(days=100)
計算字段中的日期值為一周中的周幾(例如,星期天)。
表達(dá)式:
!field1!.strftime('%A')?代碼實例 - 字符串
可以使用多種 Python 編碼模式來完成字符串計算。
返回最右側(cè)三個字符。
表達(dá)式:
!SUB_REGION![-3:]
將所有大寫字母 P 替換為小寫字母 p。
表達(dá)式:
!STATE_NAME!.replace("P","p")
通過空格分隔符串連兩個字段。
表達(dá)式:
!SUB_REGION! + " " + !STATE_ABBR!?轉(zhuǎn)換為正確的大小寫形式
下列各例顯示的是轉(zhuǎn)換單詞的不同方法,這些方法可使每個單詞的首字母變?yōu)榇髮憽⑵溆嘧帜缸優(yōu)樾憽?/p>
表達(dá)式:
' '.join([i.capitalize() for i in !STATE_NAME!.split(' ')])?表達(dá)式:
!STATE_NAME!.title()?正則表達(dá)式
Python 的 re 模塊提供了正則表達(dá)式匹配操作,可用于對字符串執(zhí)行復(fù)雜的模式匹配和替換規(guī)則。
re - 正則表達(dá)式運算正則表達(dá)式的用法
使用單詞 Street 替換 St 或 St.,在字符串的末尾生成一個新單詞。
表達(dá)式:
update_street(!ADDRESS!)
代碼塊:
import re
def update_street(street_name):
return re.sub(r"""\b(St|St.)\Z""",
'Street',
street_name)?累加計算和順序計算
可以使用全局變量來進行累加計算和順序計算。
根據(jù)某間隔值計算順序 ID 或數(shù)字。
表達(dá)式:
autoIncrement()
代碼塊:
rec=0
def autoIncrement():
global rec
pStart = 1 # adjust start value, if req'd
pInterval = 1 # adjust interval value, if req'd
if (rec == 0):
rec = pStart
else:
rec = rec + pInterval
return rec
計算數(shù)值型字段的累加值。
表達(dá)式:
accumulate(!FieldA!)
代碼塊:
total = 0
def accumulate(increment):
global total
if total:
total += increment
else:
total = increment
return total
計算數(shù)值型字段的百分比增量。
表達(dá)式:
percentIncrease(float(!FieldA!))
代碼塊:
lastValue = 0
def percentIncrease(newValue):
global lastValue
if lastValue:
percentage = ((newValue - lastValue) / lastValue) * 100
else:
percentage = 0
lastValue = newValue
return percentage?隨機值
可以使用 random 模塊來計算隨機值。
通過 numpy 站點包來計算 0.0 和 1.0 之間的隨機浮點值。
表達(dá)式:
getRandomValue()
代碼塊:
import numpy
def getRandomValue():
return numpy.random.random()
使用隨機模塊來計算 0 與 10 之間的隨機整數(shù)。
表達(dá)式:
random.randint(0, 10)
代碼塊:
import random?計算空值
在 Python 表達(dá)式中,可通過 Python None 來計算空值。
注:
僅當(dāng)該字段為空時,才可以進行以下計算。
使用 Python None 計算空值。
表達(dá)式:
None?相關(guān)主題
有關(guān)字段計算的基礎(chǔ)知識
授權(quán)轉(zhuǎn)載:gisoracle
網(wǎng)課學(xué)習(xí) + 權(quán)威結(jié)業(yè)證書
我們精心匯總了一些相對簡單
培訓(xùn)考核通過便可獲取的證書
自然資源部職鑒中心發(fā)證
可用于招投標(biāo)、資質(zhì)系統(tǒng)
等
測繪師繼續(xù)教育20學(xué)時
中國測繪網(wǎng)新媒體中心
cehui8@qq.com
商務(wù)合作/微信 214979525
【相關(guān)學(xué)習(xí)推薦:python教程】
python做數(shù)學(xué)函數(shù)題的方法:
1、打開CMD命令行以后我們先來看一個求平方的函數(shù),如下圖所示,用pow即可計算某個數(shù)的幾次方
2、接下來我們可以運用abs函數(shù)來求某一個數(shù)的絕對值,如下圖所示
3、在遇到小數(shù)的時候,我們經(jīng)常需要舍棄小數(shù)的部分直接用整數(shù),那么就可以用floor函數(shù)了,但是直接用的話是報錯的,如下圖所示
4、這個時候我們需要導(dǎo)入math模塊,因為floor函數(shù)在math模塊中,如下圖所示
5、接下來我們還會用到math函數(shù)中的開平方根的函數(shù)sqrt,如下圖所示
6、最后我們在應(yīng)用數(shù)學(xué)函數(shù)的時候可以直接將起賦值給某個變量,然后直接調(diào)用該變量即可,如下圖所示
Python 中的字符串還支持轉(zhuǎn)義字符。所謂轉(zhuǎn)義字符是指使用反斜杠“\”對一些特殊字符進行轉(zhuǎn)義。
轉(zhuǎn)義字符說明
\ 續(xù)行符
\n 換行符
\0 空
\t 水平制表符,用于橫向跳到下一制表位
\'' 雙引號
\' 單引號
\\ 一個反斜杠
\f 換頁
\0dd 八進制數(shù),dd 代表字符,如\012 代表換行
\xhh 十六進制數(shù),hh 代表字符,如\x0a 代表換行
在Python 中,提供了如下表所示的函數(shù)進行數(shù)據(jù)類型的轉(zhuǎn)換。
函數(shù)作用
int(x) 將x 轉(zhuǎn)換成整數(shù)類型
float(x) 將x 轉(zhuǎn)換成浮點數(shù)類型
complex(real [,imag]) 創(chuàng)建一個復(fù)數(shù)
str(x) 將x 轉(zhuǎn)換為字符串
repr(x) 將x 轉(zhuǎn)換為表達(dá)式字符串
eval(str) 計算在字符串中的有效Python 表達(dá)式,并返回一個對象
chr(x) 將整數(shù)x 轉(zhuǎn)換為一個字符
ord(x) 將一個字符x 轉(zhuǎn)換為它對應(yīng)的整數(shù)值
hex(x) 將一個整數(shù)x 轉(zhuǎn)換為一個十六進制字符串
oct(x) 將一個整數(shù)x 轉(zhuǎn)換為一個八進制的字符串
賦值運算符主要用來為變量等賦值。使用時,可以直接把基本賦值運算符“=”右邊的值賦給左邊的變量,也可以進行某些運算后再賦值給左邊的變量。在Python 中常用的賦值。
運算符如下表所示。
運算符說明舉例展開形式
= 簡單的賦值運算x=y x=y
+= 加賦值x+=y x=x+y
-= 減賦值x-=y x=x-y
*= 乘賦值x*=y x=x*y
/= 除賦值x/=y x=x/y
%= 取余數(shù)賦值x%=y x=x%y
**= 冪賦值x**=y x=x**y
//= 取整除賦值x//=y x=x//y
比較運算符,也稱關(guān)系運算符,用于對變量或表達(dá)式的結(jié)果進行大小、真假等比較,如果比較結(jié)果為真,則返回True,如果為假,則返回False。比較運算符通常用在條件語句中作為判斷的依據(jù)。Python 中的比較運算符如下表所示。
運算符作用舉例結(jié)果
大于'a' 'b' False
小于156 456 True
== 等于'c' == 'c' True
!= 不等于'y' != 't' True
= 大于或等于479 = 426 True
= 小于或等于62.45 = 45.5 False
邏輯運算符是對真和假兩種布爾值進行運算,運算后的結(jié)果仍是一個布爾值,Python中的邏輯運算符主要包括and(邏輯與)、or(邏輯或)、not(邏輯非)。
運算符含義用法結(jié)合方向
and 邏輯與op1 and op2 從左到右
or 邏輯或op1 or op2 從左到右
not 邏輯非not op 從右到左
所謂運算符的優(yōu)先級,是指在應(yīng)用中哪一個運算符先計算,哪一個后計算,與數(shù)學(xué)的四則運算應(yīng)遵循的“先乘除,后加減”是一個道理。
下表按從高到低的順序列出了運算符的優(yōu)先級。同一行中的運算符具有相同優(yōu)先級,此時它們的結(jié)合方向決定求值順序。
運算符說明
** 冪
~、+、- 取反、正號和負(fù)號
*、/、%、// 算術(shù)運算符
+、- 算術(shù)運算符
、 位運算符中的左移和右移
位運算符中的位與
^ 位運算符中的位異或
| 位運算符中的位或
、=、、=、!=、== 比較運算符
在Python 中,使用內(nèi)置函數(shù)input()可以接收用戶的鍵盤輸入。input()函數(shù)的基本用法如下:
variable = input("提示文字")
其中,variable 為保存輸入結(jié)果的變量,雙引號內(nèi)的文字用于提示要輸入的內(nèi)容。
默認(rèn)的情況下,在Python中,使用內(nèi)置的print()函數(shù)可以將結(jié)果輸出到IDLE或者標(biāo)準(zhǔn)控制臺上。其基本語法格式如下:
Print(輸出內(nèi)容)
其中,輸出內(nèi)容可以是數(shù)字和字符串(字符串需要使用引號括起來),此類內(nèi)容將直接
輸出,也可以是包含運算符的表達(dá)式,此類內(nèi)容將計算結(jié)果輸出。
運算
a = 21
b = 10
c = 0
c = a + b
print "1 - c 的值為:", c
c = a - b
print "2 - c 的值為:", c
c = a * b
print "3 - c 的值為:", c
c = a / b
print "4 - c 的值為:", c
c = a % b
print "5 - c 的值為:", c
a = 2
b = 3
c = a**b
print "6 - c 的值為:", c
a = 10
b = 5
c = a//b
print "7 - c 的值為:", c
python比較
a = 21
b = 10
c = 0
if ( a == b ):
print "1 - a 等于 b"
else:
print "1 - a 不等于 b"
if ( a != b ):
print "2 - a 不等于 b"
else:
print "2 - a 等于 b"
if ( a b ):
print "3 - a 不等于 b"
else:
print "3 - a 等于 b"
if ( a b ):
print "4 - a 小于 b"
else:
print "4 - a 大于等于 b"
if ( a b ):
print "5 - a 大于 b"
else:
print "5 - a 小于等于 b"
a = 5
b = 20
if ( a = b ):
print "6 - a 小于等于 b"
else:
print "6 - a 大于 b"
if ( b = a ):
print "7 - b 大于等于 a"
else:
print "7 - b 小于 a"
賦值
a = 21
b = 10
c = 0
c = a + b
print "1 - c 的值為:", c
c += a
print "2 - c 的值為:", c
c *= a
print "3 - c 的值為:", c
c /= a
print "4 - c 的值為:", c
c = 2
c %= a
print "5 - c 的值為:", c
c **= a
print "6 - c 的值為:", c
c //= a
print "7 - c 的值為:", c
邏輯運算符:
a = 10
b = 20
if ( a and b ):
print "1 - 變量 a 和 b 都為 true"
else:
print "1 - 變量 a 和 b 有一個不為 true"
if ( a or b ):
print "2 - 變量 a 和 b 都為 true,或其中一個變量為 true"
else:
print "2 - 變量 a 和 b 都不為 true"
a = 0
if ( a and b ):
print "3 - 變量 a 和 b 都為 true"
else:
print "3 - 變量 a 和 b 有一個不為 true"
if ( a or b ):
print "4 - 變量 a 和 b 都為 true,或其中一個變量為 true"
else:
print "4 - 變量 a 和 b 都不為 true"
if not( a and b ):
print "5 - 變量 a 和 b 都為 false,或其中一個變量為 false"
else:
print "5 - 變量 a 和 b 都為 true"
in,not in
a = 10
b = 20
list = [1, 2, 3, 4, 5 ];
if ( a in list ):
print "1 - 變量 a 在給定的列表中 list 中"
else:
print "1 - 變量 a 不在給定的列表中 list 中"
if ( b not in list ):
print "2 - 變量 b 不在給定的列表中 list 中"
else:
print "2 - 變量 b 在給定的列表中 list 中"
a = 2
if ( a in list ):
print "3 - 變量 a 在給定的列表中 list 中"
else:
print "3 - 變量 a 不在給定的列表中 list 中"
條件
flag = False
name = 'luren'
if name == 'python': # 判斷變量否為'python'
flag = True # 條件成立時設(shè)置標(biāo)志為真
print 'welcome boss' # 并輸出歡迎信息
else:
print name
num = 5
if num == 3: # 判斷num的值
print 'boss'
elif num == 2:
print 'user'
elif num == 1:
print 'worker'
elif num 0: # 值小于零時輸出
print 'error'
else:
print 'roadman' # 條件均不成立時輸出
循環(huán)語句:
count = 0
while (count 9):
print 'The count is:', count
count = count + 1
print "Good bye!"
i = 1
while i 10:
i += 1
if i%2 0: # 非雙數(shù)時跳過輸出
continue
print i # 輸出雙數(shù)2、4、6、8、10
i = 1
while 1: # 循環(huán)條件為1必定成立
print i # 輸出1~10
i += 1
if i 10: # 當(dāng)i大于10時跳出循環(huán)
break
for letter in 'Python': # 第一個實例
print '當(dāng)前字母 :', letter
fruits = ['banana', 'apple', 'mango']
for fruit in fruits: # 第二個實例
print '當(dāng)前水果 :', fruit
print "Good bye!"
獲取用戶輸入:raw_input
var = 1
while var == 1 : # 該條件永遠(yuǎn)為true,循環(huán)將無限執(zhí)行下去
num = raw_input("Enter a number :")
print "You entered: ", num
print "Good bye!"
range,len
fruits = ['banana', 'apple', 'mango']
for index in range(len(fruits)):
print '當(dāng)前水果 :', fruits[index]
print "Good bye!"
python數(shù)學(xué)函數(shù):
abs,cell,cmp,exp,fabs,floor,log,log10,max,min,mod,pow,round,sqrt
randrange
訪問字符串的值
var1 = 'Hello World!'
var2 = "Python Runoob"
print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]
轉(zhuǎn)義字符
格式化輸出
print "My name is %s and weight is %d kg!" % ('Zara', 21)
字符串函數(shù):
添加元素
list = [] ## 空列表
list.append('Google') ## 使用 append() 添加元素
list.append('Runoob')
print list
刪除元素
list1 = ['physics', 'chemistry', 1997, 2000]
print list1
del list1[2]
print "After deleting value at index 2 : "
print list1
列表操作
列表方法
刪除字典
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
del dict['Name']; # 刪除鍵是'Name'的條目
dict.clear(); # 清空詞典所有條目
del dict ; # 刪除詞典
print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];
字典的函數(shù):
當(dāng)前時間戳:
import time
time.time()
格式化日期輸出
import time
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())
a = "Sat Mar 28 22:24:24 2016"
print time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y"))
獲取某個月日歷:calendar
import calendar
cal = calendar.month(2016, 1)
print "以下輸出2016年1月份的日歷:"
print cal
當(dāng)前日期和時間
import datetime
i = datetime.datetime.now()
print ("當(dāng)前的日期和時間是 %s" % i)
print ("ISO格式的日期和時間是 %s" % i.isoformat() )
print ("當(dāng)前的年份是 %s" %i.year)
print ("當(dāng)前的月份是 %s" %i.month)
print ("當(dāng)前的日期是 %s" %i.day)
print ("dd/mm/yyyy 格式是 %s/%s/%s" % (i.day, i.month, i.year) )
print ("當(dāng)前小時是 %s" %i.hour)
print ("當(dāng)前分鐘是 %s" %i.minute)
print ("當(dāng)前秒是 %s" %i.second)
不定長參數(shù):*
lambda:匿名函數(shù)
def....
python模塊搜索路徑
獲取用戶輸入
str = raw_input("請輸入:")
print "你輸入的內(nèi)容是: ", str
input可以接收表達(dá)式
open參數(shù)
write要自己添加換行符
讀取10個字符
重命名:os.rename
os.remove
os.mkdir os.chdir
os.getcwd
os.rmdir
open參數(shù)
file的方法
異常:
try:
fh = open("testfile", "w")
fh.write("這是一個測試文件,用于測試異常!!")
except IOError:
print "Error: 沒有找到文件或讀取文件失敗"
else:
print "內(nèi)容寫入文件成功"
fh.close()
try:
fh = open("testfile", "w")
fh.write("這是一個測試文件,用于測試異常!!")
finally:
print "Error: 沒有找到文件或讀取文件失敗"
用戶自定義異常:
os 模塊提供了非常豐富的方法用來處理文件和目錄。常用的方法如下表所示:
| 序號 | 方法及描述 |
| 1 |
os.access(path, mode)
檢驗權(quán)限模式 |
| 2 |
os.chdir(path)
改變當(dāng)前工作目錄 |
| 3 |
os.chflags(path, flags)
設(shè)置路徑的標(biāo)記為數(shù)字標(biāo)記。 |
| 4 |
os.chmod(path, mode)
更改權(quán)限 |
| 5 |
os.chown(path, uid, gid)
更改文件所有者 |
| 6 |
os.chroot(path)
改變當(dāng)前進程的根目錄 |
| 7 |
os.close(fd)
關(guān)閉文件描述符 fd |
| 8 |
os.closerange(fd_low, fd_high)
關(guān)閉所有文件描述符,從 fd_low (包含) 到 fd_high (不包含), 錯誤會忽略 |
| 9 |
os.dup(fd)
復(fù)制文件描述符 fd |
| 10 |
os.dup2(fd, fd2)
將一個文件描述符 fd 復(fù)制到另一個 fd2 |
| 11 |
os.fchdir(fd)
通過文件描述符改變當(dāng)前工作目錄 |
| 12 |
os.fchmod(fd, mode)
改變一個文件的訪問權(quán)限,該文件由參數(shù)fd指定,參數(shù)mode是Unix下的文件訪問權(quán)限。 |
| 13 |
os.fchown(fd, uid, gid)
修改一個文件的所有權(quán),這個函數(shù)修改一個文件的用戶ID和用戶組ID,該文件由文件描述符fd指定。 |
| 14 |
os.fdatasync(fd)
強制將文件寫入磁盤,該文件由文件描述符fd指定,但是不強制更新文件的狀態(tài)信息。 |
| 15 |
os.fdopen(fd[, mode[, bufsize]])
通過文件描述符 fd 創(chuàng)建一個文件對象,并返回這個文件對象 |
| 16 |
os.fpathconf(fd, name)
返回一個打開的文件的系統(tǒng)配置信息。name為檢索的系統(tǒng)配置的值,它也許是一個定義系統(tǒng)值的字符串,這些名字在很多標(biāo)準(zhǔn)中指定(POSIX.1, Unix 95, Unix 98, 和其它)。 |
| 17 |
os.fstat(fd)
返回文件描述符fd的狀態(tài),像stat()。 |
| 18 |
os.fstatvfs(fd)
返回包含文件描述符fd的文件的文件系統(tǒng)的信息,像 statvfs() |
| 19 |
os.fsync(fd)
強制將文件描述符為fd的文件寫入硬盤。 |
| 20 |
os.ftruncate(fd, length)
裁剪文件描述符fd對應(yīng)的文件, 所以它最大不能超過文件大小。 |
| 21 |
os.getcwd()
返回當(dāng)前工作目錄 |
| 22 |
os.getcwdu()
返回一個當(dāng)前工作目錄的Unicode對象 |
| 23 |
os.isatty(fd)
如果文件描述符fd是打開的,同時與tty(-like)設(shè)備相連,則返回true, 否則False。 |
| 24 |
os.lchflags(path, flags)
設(shè)置路徑的標(biāo)記為數(shù)字標(biāo)記,類似 chflags(),但是沒有軟鏈接 |
| 25 |
os.lchmod(path, mode)
修改連接文件權(quán)限 |
| 26 |
os.lchown(path, uid, gid)
更改文件所有者,類似 chown,但是不追蹤鏈接。 |
| 27 |
os.link(src, dst)
創(chuàng)建硬鏈接,名為參數(shù) dst,指向參數(shù) src |
| 28 |
os.listdir(path)
返回path指定的文件夾包含的文件或文件夾的名字的列表。 |
| 29 |
os.lseek(fd, pos, how)
設(shè)置文件描述符 fd當(dāng)前位置為pos, how方式修改: SEEK_SET 或者 0 設(shè)置從文件開始的計算的pos; SEEK_CUR或者 1 則從當(dāng)前位置計算; os.SEEK_END或者2則從文件尾部開始. 在unix,Windows中有效 |
| 30 |
os.lstat(path)
像stat(),但是沒有軟鏈接 |
| 31 |
os.major(device)
從原始的設(shè)備號中提取設(shè)備major號碼 (使用stat中的st_dev或者st_rdev field)。 |
| 32 |
os.makedev(major, minor)
以major和minor設(shè)備號組成一個原始設(shè)備號 |
| 33 |
os.makedirs(path[, mode])
遞歸文件夾創(chuàng)建函數(shù)。像mkdir(), 但創(chuàng)建的所有intermediate-level文件夾需要包含子文件夾。 |
| 34 |
os.minor(device)
從原始的設(shè)備號中提取設(shè)備minor號碼 (使用stat中的st_dev或者st_rdev field )。 |
| 35 |
os.mkdir(path[, mode])
以數(shù)字mode的mode創(chuàng)建一個名為path的文件夾.默認(rèn)的 mode 是 0777 (八進制)。 |
| 36 |
os.mkfifo(path[, mode])
創(chuàng)建命名管道,mode 為數(shù)字,默認(rèn)為 0666 (八進制) |
| 37 |
os.mknod(filename[, mode=0600, device])
創(chuàng)建一個名為filename文件系統(tǒng)節(jié)點(文件,設(shè)備特別文件或者命名pipe)。
|
| 38 |
os.open(file, flags[, mode])
打開一個文件,并且設(shè)置需要的打開選項,mode參數(shù)是可選的 |
| 39 |
os.openpty()
打開一個新的偽終端對。返回 pty 和 tty的文件描述符。 |
| 40 |
os.pathconf(path, name)
返回相關(guān)文件的系統(tǒng)配置信息。 |
| 41 |
os.pipe()
創(chuàng)建一個管道. 返回一對文件描述符(r, w) 分別為讀和寫 |
| 42 |
os.popen(command[, mode[, bufsize]])
從一個 command 打開一個管道 |
| 43 |
os.read(fd, n)
從文件描述符 fd 中讀取最多 n 個字節(jié),返回包含讀取字節(jié)的字符串,文件描述符 fd對應(yīng)文件已達(dá)到結(jié)尾, 返回一個空字符串。 |
| 44 |
os.readlink(path)
返回軟鏈接所指向的文件 |
| 45 |
os.remove(path)
刪除路徑為path的文件。如果path 是一個文件夾,將拋出OSError; 查看下面的rmdir()刪除一個 directory。 |
| 46 |
os.removedirs(path)
遞歸刪除目錄。 |
| 47 |
os.rename(src, dst)
重命名文件或目錄,從 src 到 dst |
| 48 |
os.renames(old, new)
遞歸地對目錄進行更名,也可以對文件進行更名。 |
| 49 |
os.rmdir(path)
刪除path指定的空目錄,如果目錄非空,則拋出一個OSError異常。 |
| 50 |
os.stat(path)
獲取path指定的路徑的信息,功能等同于C API中的stat()系統(tǒng)調(diào)用。 |
| 51 |
os.stat_float_times([newvalue])
決定stat_result是否以float對象顯示時間戳
|
| 52 |
os.statvfs(path)
獲取指定路徑的文件系統(tǒng)統(tǒng)計信息 |
| 53 |
os.symlink(src, dst)
創(chuàng)建一個軟鏈接 |
| 54 |
os.tcgetpgrp(fd)
返回與終端fd(一個由os.open()返回的打開的文件描述符)關(guān)聯(lián)的進程組 |
| 55 |
os.tcsetpgrp(fd, pg)
設(shè)置與終端fd(一個由os.open()返回的打開的文件描述符)關(guān)聯(lián)的進程組為pg。 |
| 56 |
os.tempnam([dir[, prefix]])
返回唯一的路徑名用于創(chuàng)建臨時文件。 |
| 57 |
os.tmpfile()
返回一個打開的模式為(w+b)的文件對象 .這文件對象沒有文件夾入口,沒有文件描述符,將會自動刪除。 |
| 58 |
os.tmpnam()
為創(chuàng)建一個臨時文件返回一個唯一的路徑 |
| 59 |
os.ttyname(fd)
返回一個字符串,它表示與文件描述符fd 關(guān)聯(lián)的終端設(shè)備。如果fd 沒有與終端設(shè)備關(guān)聯(lián),則引發(fā)一個異常。 |
| 60 |
os.unlink(path)
刪除文件路徑 |
| 61 |
os.utime(path, times)
返回指定的path文件的訪問和修改的時間。 |
| 62 |
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
輸出在文件夾中的文件名通過在樹中游走,向上或者向下。 |
| 63 |
os.write(fd, str)
寫入字符串到文件描述符 fd中. 返回實際寫入的字符串長度 |