[Python與數(shù)學(xué)建模-入門使用]-2Python基礎(chǔ)知識(shí)

1基礎(chǔ)數(shù)據(jù)處理

??數(shù)據(jù)處理最基本的對(duì)象就是變量和常數(shù)。變量的值可變動(dòng),常數(shù)則是固定不變的數(shù)據(jù)。變量命名規(guī)則如下:
??第一個(gè)字符必須是英文字母、下劃線(“_”)或中文,其余字符可以搭配其他的大小寫英文字母、數(shù)字、下劃線或中文。
??不能使用Python內(nèi)置的關(guān)鍵字。
??變量名稱必須區(qū)分大小寫字母。
??Python語(yǔ)言簡(jiǎn)潔明了,變量不需要聲明就可以使用,給變量賦值的方式如下:
??變量名 = 數(shù)據(jù)
??例如:score = 100
??如果要讓多個(gè)變量同時(shí)具有相同的值,例如:n = m = 20
??當(dāng)我們想要在同一行中給多個(gè)變量賦值時(shí),可以使用“,”來(lái)分割變量,例如:a, b, c = 80, 60, 20
??Python也允許用戶以“;”來(lái)分割表達(dá)式,以便連續(xù)聲明不同的程序語(yǔ)句,例如:a = 10; b = 20
??Python基本數(shù)據(jù)類型包括數(shù)值類型、布爾類型和字符串類型。

1.1數(shù)值數(shù)據(jù)類型

??數(shù)值數(shù)據(jù)類型主要有整數(shù)和浮點(diǎn)數(shù),浮點(diǎn)數(shù)就是帶有小數(shù)點(diǎn)的數(shù)字,例如:
??a = 100 #整數(shù)
??b = 123.45 #浮點(diǎn)數(shù)

1.2布爾數(shù)據(jù)類型

??Python語(yǔ)言的布爾(bool)數(shù)據(jù)類型只有True和False兩個(gè)值,例如:
??switch = True
??turn = False
??布爾數(shù)據(jù)類型通常用于流程控制中的邏輯判斷。

1.3字符串?dāng)?shù)據(jù)類型

??在Python中定義一個(gè)字符串可以使用單引號(hào)、雙引號(hào)和三引號(hào)(三個(gè)單引號(hào)或三個(gè)雙引號(hào)),這使得Python輸入文本更方便。在Python中,單引號(hào)和雙引號(hào)表示法在字符串顯示上完全相同,一般不用區(qū)別。但是通常情況下,單引號(hào)用于表示一個(gè)單詞,雙引號(hào)用于表示一個(gè)詞組或句子。
??將字符串內(nèi)容放在一對(duì)三引號(hào)中間時(shí),不僅保留字符串的內(nèi)容,還保留字符串的格式。三引號(hào)通常用于輸入多行文本信息,一般可以表示大段的敘述性字符串。例如:
??title = "新年快樂"
??content = """同志們好!
??大家辛苦了!"""

2輸出print和輸入input

2.1輸出print()函數(shù)

??print指令就是用來(lái)輸出指定的字符串或數(shù)值,語(yǔ)法如下:
??print(項(xiàng)目1[, 項(xiàng)目2, …, sep=分割字符, end=終止符])
??例如:
??程序文件Pz1_2.py
??print("四書五經(jīng)")
??print("《大學(xué)》","《中庸》","《論語(yǔ)》","《孟子》",sep='、')
??print("《大學(xué)》","《中庸》","《論語(yǔ)》","《孟子》")
??print("《大學(xué)》","《中庸》","《論語(yǔ)》","《孟子》",end=' ')
??print("《詩(shī)經(jīng)》","《尚書》","《禮記》","《易經(jīng)》","《春秋》")
??執(zhí)行結(jié)果:
??四書五經(jīng)
??《大學(xué)》、《中庸》、《論語(yǔ)》、《孟子》
??《大學(xué)》《中庸》《論語(yǔ)》《孟子》
??《大學(xué)》《中庸》《論語(yǔ)》《孟子》 《詩(shī)經(jīng)》《尚書》《禮記》《易經(jīng)》《春秋》
??print指令也支持格式化功能,主要是由%字符與后面的格式化字符串來(lái)控制輸出格式,語(yǔ)法如下:print("項(xiàng)目"%(參數(shù)行))
??在輸出的項(xiàng)目中使用“%s”代表輸出字符串,“%d”代表輸出整數(shù),“%f”代表輸出浮點(diǎn)數(shù)。例如:
??程序文件Pz1_3.py
??name="張三"; age=20
??print("%s的年齡是%d"%(name,age)) #輸出:張三的年齡是20
??也可以使用format()進(jìn)行格式化輸出,例如
??print("{}的年齡是{}".format(name,age)) #輸出:張三的年齡是20
??另外,通過設(shè)置格式符可以達(dá)到對(duì)齊效果,例如:
??%7s:固定輸出7個(gè)字符,若不足7個(gè)字符,則會(huì)在字符串左方填入空格符;若大于7個(gè)字符,則全部輸出。
??%7d:固定輸出7個(gè)數(shù)字,若不足7位數(shù),則會(huì)在數(shù)字左方填入空格符;若大于7位數(shù),則全部輸出。
??%8.2f:連同小數(shù)點(diǎn)也算1個(gè)字符,這種格式會(huì)固定輸出8個(gè)字符,其中小數(shù)固定輸出2位數(shù),如果整數(shù)少于5位數(shù),就會(huì)在數(shù)字左方填入空格符,但若小數(shù)小于2位數(shù),則會(huì)在數(shù)字右方填入0。

2.2輸出轉(zhuǎn)義字符

??print()函數(shù)除了輸出一般的字符串或字符外,也可以在字符前加上反斜杠“\”來(lái)通知編譯程序?qū)⒑竺娴淖址?dāng)成一個(gè)特殊字符,形成轉(zhuǎn)義字符。例如'\n'是表示換行功能的“轉(zhuǎn)義字符”,表1.3為幾個(gè)常用的轉(zhuǎn)義字符。


圖片.png

2.3輸入input()函數(shù)

??input()是輸入指令,語(yǔ)法如下:
變量=input(提示字符串)
??當(dāng)我們輸入數(shù)據(jù)再按Enter鍵后,就會(huì)將輸入的數(shù)據(jù)賦值給變量?!疤崾咀址眲t是一段給用戶的提示信息,例如:
??height=input("請(qǐng)輸入你的身高:")
??print(height)
??注1.2 input所輸入的內(nèi)容是一種字符串,如果要將該字符串轉(zhuǎn)換為整數(shù),就必須通過int()函數(shù)或eval()函數(shù),如果將該字符串轉(zhuǎn)換為浮點(diǎn)數(shù),必須通過float()函數(shù)。
??例1.1輸入圓的半徑,求圓的周長(zhǎng)
??程序文件Pex1_1.py

r=float(input("請(qǐng)輸入圓的半徑:"))
print('圓的周長(zhǎng)是:',2*pi*r)

??當(dāng)使用print輸出時(shí),還可以指定數(shù)值以哪種進(jìn)制輸出。常用的4種進(jìn)制格式及說明如表1.4所示。


圖片.png

3運(yùn)算符與表達(dá)式

??表達(dá)式是由運(yùn)算符與操作數(shù)所組成的。其中+、-、*及/符號(hào)稱為運(yùn)算符,操作數(shù)則包含變量、數(shù)值和字符。

3.1算術(shù)運(yùn)算符

??算術(shù)運(yùn)算符主要包含數(shù)學(xué)運(yùn)算中四則運(yùn)算的運(yùn)算符、求余運(yùn)算符、整除運(yùn)算符、冪次運(yùn)算符等,例如
??程序文件Pz1_4.py

x1 = 58 + 32     #x1=90
x2 = 89 - 28     #x2=61
x3 = 3 * 12      #x3=36
x4 = 125 / 7     #x4=17.857142857142858
x5 =125 // 7     #整除,x5=17
x6 = 4**3        #4的3次冪,x6=64
x7 = 46 % 5      #求余數(shù),x7=1

3.2復(fù)合賦值運(yùn)算符

??由賦值運(yùn)算符“=”與其他運(yùn)算符結(jié)合而成,也就是“=”右方的源操作數(shù)必須有一個(gè)和左方接受賦值數(shù)值的操作數(shù)相同,例如:

x += 1    #即x=x+1
x -= 9    #即x=x-9
x *= 6    #即x=x*6
x /= 2    #即x=x/2
x **=2   #即x=x**2
x //= 7   #即x=x//7
x %= 5   #即x=x%5

3.3關(guān)系運(yùn)算符

??用來(lái)比較兩個(gè)數(shù)值之間的大小關(guān)系,通常用于流程控制語(yǔ)句,如果該關(guān)系運(yùn)算結(jié)果成立,就返回真值(True);若不成立,則返回假值(False)。例如a=5,b=3,進(jìn)行關(guān)系運(yùn)算的結(jié)果如表1.5所示。


圖片.png

3.4邏輯運(yùn)算符

??主要有3個(gè)運(yùn)算符:not、and、or,它們的功能分別說明如下:
??程序文件Pz1_5.py

print (100>2) and (52>41)  #輸出True
total = 124
value = (total % 4 ==0) and (total % 3 == 0)
print(value)     #輸出False

3.5位運(yùn)算符

??位運(yùn)算(bit operation)就是二進(jìn)制位逐位進(jìn)行運(yùn)算。在Python中,如果要將整數(shù)轉(zhuǎn)換為二進(jìn)制,就可以使用內(nèi)置函數(shù)bin()。二進(jìn)制數(shù)字操作的按位運(yùn)算符如表1.6所示。


圖片.png

??表1.6中實(shí)例的計(jì)算過程如下:
??程序文件Pz1_6.py

a=5; b=-6
print(~a, bin(~a), bin(b),sep='、')  #輸出:-6、-0b110、-0b110
print(5<<2)      #輸出:20
print(5>>2)      #輸出:1
print(5&3)       #輸出:1
print(5|3)       #輸出:7
print(5^3)       #輸出:6

4流程控制

4.1if語(yǔ)句

??多分支if語(yǔ)句的一般格式為:

if 條件表達(dá)式1:
   語(yǔ)句塊1
elif 條件表達(dá)式2:
   語(yǔ)句塊2
……
elif 條件表達(dá)式m:
   語(yǔ)句塊m
else:
   語(yǔ)句塊m+1

??當(dāng)條件表達(dá)式1的值為True時(shí),執(zhí)行語(yǔ)句塊1;否則求條件表達(dá)式2的值,為True時(shí),執(zhí)行語(yǔ)句塊2;以此類推;若前面m個(gè)表達(dá)式的值都為False,則執(zhí)行else后面的語(yǔ)句塊m+1。不管有幾個(gè)分支,程序執(zhí)行完一個(gè)分支后,其余分支將不再執(zhí)行。
??注1. 4
????(1)在if(或elif)語(yǔ)句的條件表達(dá)式后面必須加冒號(hào)“:”。
????(2)if(或elif) 語(yǔ)句中的語(yǔ)句塊必須向右縮進(jìn),語(yǔ)句塊可以是單個(gè)語(yǔ)句,也可以是多個(gè)語(yǔ)句。當(dāng)包含兩個(gè)或兩個(gè)以上的語(yǔ)句時(shí),語(yǔ)句必須縮進(jìn)一致,即語(yǔ)句塊中的語(yǔ)句必須上下對(duì)齊。
????(3)如果語(yǔ)句塊中只有一條語(yǔ)句,if(或elif)語(yǔ)句和語(yǔ)句塊可以寫在同一行上。
??例1.2輸入兩個(gè)數(shù),輸出其中的最大數(shù)
??程序文件Pex1_2.py

a, b = eval(input("請(qǐng)輸入a,b兩個(gè)數(shù):"))  #把字符串轉(zhuǎn)化為數(shù)值
if a>=b: print("最大數(shù)為:",a)
else: print("最大數(shù)為:",b)

4.2for循環(huán)

??for循環(huán)又稱為計(jì)數(shù)循環(huán),是一種可以重復(fù)執(zhí)行固定次數(shù)的循環(huán),語(yǔ)法如下:

for item in 序列對(duì)象:
  for的語(yǔ)句塊
else:
  else的語(yǔ)句塊  #可加入或者不加入

??上述語(yǔ)句中可加入或者不加入else指令。Python提供了range()函數(shù)來(lái)搭配使用,主要功能是建立整數(shù)序列,語(yǔ)法如下:

range([初始值,]終值[,步長(zhǎng)])

??返回一個(gè)等差數(shù)列的可迭代對(duì)象,不包括終值,這里[]表示可選項(xiàng)。初始值的默認(rèn)值為0,步長(zhǎng)的默認(rèn)值為1??傻鷮?duì)象,必須轉(zhuǎn)化為下面將要介紹的列表才能顯示所有元素。 例如:
??程序文件Pz1_7.py

print(list(range(5)))       #輸出:[0, 1, 2, 3, 4]
print(list(range(1,6)))     #輸出:[1, 2, 3, 4, 5]
print(list(range(2,10,2)))  #輸出:[2, 4, 6, 8]

??例1.3輸出1+2+3+...+7

#程序文件Pex1_3.py
sum=0; number=int(input("請(qǐng)輸入整數(shù):"))
print("從小到大排列輸出數(shù)字:")
for i in range(1,number+1):
    sum += i  #設(shè)置sum為i的和
    print("%d"%(i),end='')
    if i<number: print("+",end='')  #設(shè)置輸出連加的算式
    else: print("=",end='')
print("%d"%(sum))
sum=0
print("從大到小排列輸出數(shù)字:")
for i in range(number,0,-1):
    sum += i  #設(shè)置sum為i的和
    print("%d"%(i),end='')
    if i>1: print("+",end='')  #設(shè)置輸出連加的算式
    else: print("=",end='')
print("%d"%(sum))

4.3while循環(huán)

while語(yǔ)句的一般格式為:
while 條件表達(dá)式:
    語(yǔ)句塊1
else:
    語(yǔ)句塊2

??else指令也是一個(gè)選擇性指令,可加也可以不加。一旦條件表達(dá)式不符合,就會(huì)執(zhí)行else內(nèi)的語(yǔ)句塊2。使用while循環(huán)必須小心設(shè)置離開的條件,萬(wàn)一不小心形成無(wú)限循環(huán),就只能強(qiáng)行中斷程序,需同時(shí)按Ctrl+C組合鍵。
??注1.5 循環(huán)體的語(yǔ)句塊可以是單個(gè)語(yǔ)句,也可以是多個(gè)語(yǔ)句。當(dāng)循環(huán)體由多個(gè)語(yǔ)句構(gòu)成時(shí),必須用縮進(jìn)對(duì)齊的方式組成一個(gè)語(yǔ)句塊,否則產(chǎn)生錯(cuò)誤。


圖片.png

??程序文件Pex1_4.py

from math import *   #加載數(shù)學(xué)模塊math的所有對(duì)象
n=0; x1=float(input("請(qǐng)輸入角度:"))
x=radians(x1)
s=a=x
while abs(a)>=1e-6:
    a *= -x*x/(2*n+3)/(2*n+2)
    n +=1; s += a
print("x={},sin(x)={}".format(x1,s))

??必須執(zhí)行循環(huán)中的語(yǔ)句至少一次時(shí),由于Python語(yǔ)言沒有do while這類的循環(huán)指令,可以參考下面范例的做法:
??程序文件Pz1_8.py

sum=0; number=1
while True:
    if number==0: break
    number=int(input("數(shù)字0結(jié)束程序,請(qǐng)輸入數(shù)字:"))
    sum += number
print("目前累加的結(jié)果為:%d"%(sum))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容