Python深度學(xué)習(xí)及智能車競(jìng)賽實(shí)踐 課件 2-Python基本語(yǔ)法元素和數(shù)據(jù)類_第1頁(yè)
Python深度學(xué)習(xí)及智能車競(jìng)賽實(shí)踐 課件 2-Python基本語(yǔ)法元素和數(shù)據(jù)類_第2頁(yè)
Python深度學(xué)習(xí)及智能車競(jìng)賽實(shí)踐 課件 2-Python基本語(yǔ)法元素和數(shù)據(jù)類_第3頁(yè)
Python深度學(xué)習(xí)及智能車競(jìng)賽實(shí)踐 課件 2-Python基本語(yǔ)法元素和數(shù)據(jù)類_第4頁(yè)
Python深度學(xué)習(xí)及智能車競(jìng)賽實(shí)踐 課件 2-Python基本語(yǔ)法元素和數(shù)據(jù)類_第5頁(yè)
已閱讀5頁(yè),還剩94頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第二章Python基本語(yǔ)法元素和數(shù)據(jù)類型Python深度學(xué)習(xí)及智能車競(jìng)賽實(shí)踐010203程序基本設(shè)計(jì)方法python基本語(yǔ)法結(jié)構(gòu)python基本數(shù)據(jù)類型目錄第2頁(yè)010203程序基本設(shè)計(jì)方法python基本語(yǔ)法結(jié)構(gòu)python基本數(shù)據(jù)類型目錄第3頁(yè)第4頁(yè)計(jì)算機(jī)編程求解問(wèn)題的過(guò)程分析問(wèn)題,抽象內(nèi)容之間的交互關(guān)系;設(shè)計(jì)利用計(jì)算機(jī)求解問(wèn)題的確定性方法(IPO);編寫(xiě)、調(diào)試、測(cè)試程序;

這是從抽象問(wèn)題到解決問(wèn)題的完整過(guò)程。01—程序基本設(shè)計(jì)方法第5頁(yè)程序的基本設(shè)計(jì)方法I:Input輸入數(shù)據(jù),程序的輸入P:Process處理數(shù)據(jù),程序的主要邏輯O:Output輸出數(shù)據(jù),程序的輸出

—IPO程序設(shè)計(jì)方法01—程序基本設(shè)計(jì)方法第6頁(yè)理解IPOI-程序的輸入——文件輸入、網(wǎng)絡(luò)輸入、控制臺(tái)輸入、交互界面輸入、內(nèi)部參數(shù)輸入;

輸入是一個(gè)程序的開(kāi)始

O-程序的輸出

——控制臺(tái)輸出、圖形輸出、文件輸出、網(wǎng)絡(luò)輸出、操作系統(tǒng)內(nèi)部變量輸出等;

輸出是程序展示運(yùn)算結(jié)果的方式

P-處理方法

——

處理是程序?qū)斎霐?shù)據(jù)進(jìn)行計(jì)算產(chǎn)生輸出結(jié)果的過(guò)程,處理方法統(tǒng)稱為算法,它是程序最重要的部分;算法是一個(gè)程序的靈魂01—程序基本設(shè)計(jì)方法第7頁(yè)激活函數(shù)(ActivationFunction)是一種用于人工神經(jīng)網(wǎng)絡(luò)中的函數(shù),旨在實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)模型的非線性輸出。

實(shí)例2.1:RELU激活函數(shù)IPO程序設(shè)計(jì)方法01—程序基本設(shè)計(jì)方法第8頁(yè)問(wèn)題分析:劃分邊界

輸入:數(shù)值x;

處理:算法

f(x);

輸出:x或0

實(shí)例2.1:RELU激活函數(shù)設(shè)計(jì)程序IPO程序設(shè)計(jì)方法01—程序基本設(shè)計(jì)方法第9頁(yè)IPO程序設(shè)計(jì)方法在全國(guó)大學(xué)生智能汽車競(jìng)賽智慧交通創(chuàng)意賽中,可以通過(guò)深度學(xué)習(xí)模型得到智能車轉(zhuǎn)角預(yù)測(cè)值,這個(gè)值的大小是在[-1,1]之間,大于0表示右轉(zhuǎn)彎,小于0表示左轉(zhuǎn)彎。智能車轉(zhuǎn)向是可以通過(guò)左右輪差速實(shí)現(xiàn)轉(zhuǎn)向如需要右轉(zhuǎn)彎,右輪減速,左輪速度不變;如需要左轉(zhuǎn)彎,左輪減速,右輪速度不變。實(shí)例2.2:智能車差速轉(zhuǎn)向01—程序基本設(shè)計(jì)方法第10頁(yè)問(wèn)題分析:劃分邊界

輸入:車輪直行速度speed,深度學(xué)習(xí)模型得到的歸一化轉(zhuǎn)向角度angle,調(diào)節(jié)系數(shù)

kx;

處理:算法f(x);

輸出:左、右輪速度。IPO程序設(shè)計(jì)方法實(shí)例2.2:智能車差速轉(zhuǎn)向01—程序基本設(shè)計(jì)方法第11頁(yè)問(wèn)題分析:劃分邊界

輸入:speed、angle、kx;

處理:算法f(x);

輸出:左、右輪速度。問(wèn)題:如何利用Python程序?qū)崿F(xiàn)智能車差速轉(zhuǎn)向控制?IPO程序設(shè)計(jì)方法實(shí)例2.2:智能車差速轉(zhuǎn)向01—程序基本設(shè)計(jì)方法第12頁(yè)#實(shí)例2.2Steer.py智能車差速轉(zhuǎn)向speed=20#設(shè)定車輪直線行駛速度kx=0.85

#調(diào)節(jié)參數(shù)left_wheel=speedright_wheel=speedangle=eval(input("請(qǐng)輸入歸一化后的角度:"))if0<angle<=1:#右轉(zhuǎn)向right_wheel=(1-angle*kx)*speed

print("right_speed:",right_wheel,"left_speed:",left_wheel)elif

-1<=angle<=0:#左轉(zhuǎn)向left_wheel=(1-abs(angle*kx))*speed

print("right_speed:",right_wheel,"left_speed:",left_wheel)else:

print("輸入轉(zhuǎn)角信息不是歸一化數(shù)據(jù)")IPO程序設(shè)計(jì)方法01—程序基本設(shè)計(jì)方法第13頁(yè)程序運(yùn)行和測(cè)試使用IDLE打開(kāi)文件,按F5運(yùn)行(推薦)輸入數(shù)值,觀察輸出或者:在系統(tǒng)命令行運(yùn)行如下命令(需要進(jìn)入程序所在目錄):D:\pycodes\2\python2.2steer.py請(qǐng)輸入歸一化后的角度:01—程序基本設(shè)計(jì)方法010203程序基本設(shè)計(jì)方法python基本語(yǔ)法結(jié)構(gòu)python基本數(shù)據(jù)類型目錄第14頁(yè)?注釋:comment?縮進(jìn):indent?標(biāo)識(shí)符:identifier?常量:constant?變量:variable?表達(dá)式:expression?輸入:input?輸出:output?分支:Selection02—Python基本語(yǔ)法元素注釋:用于提高代碼可讀性的輔助性文字,不被執(zhí)行#實(shí)例2.2Steer.py智能車差速轉(zhuǎn)向speed=20#設(shè)定車輪直線行駛速度kx=0.85

#調(diào)節(jié)參數(shù)left_wheel=speedright_wheel=speedangle=eval(input("請(qǐng)輸入歸一化后的角度:"))if0<angle<=1:#右轉(zhuǎn)向right_wheel=(1-angle*kx)*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)elif-1<=angle<=0:#左轉(zhuǎn)向left_wheel=(1-abs(angle*kx))*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:print("輸入轉(zhuǎn)角信息不是歸一化數(shù)據(jù)")-單行注釋:以#開(kāi)頭,其后內(nèi)容為注釋02—Python基本語(yǔ)法元素注釋:用于提高代碼可讀性的輔助性文字,不被執(zhí)行'''實(shí)例2.2Steer.py智能車差速轉(zhuǎn)向本實(shí)例用于全國(guó)大學(xué)生智能汽車競(jìng)賽'''left_wheel=speedright_wheel=speedangle=eval(input("請(qǐng)輸入歸一化后的角度:"))if0<angle<=1:

passelif-1<=angle<=0:passelse:

pass-

多行注釋:以'''開(kāi)頭和結(jié)尾

02—Python基本語(yǔ)法元素#實(shí)例2.2Steer.py智能車差速轉(zhuǎn)向speed=20#設(shè)定車輪直線行駛速度kx=0.85#調(diào)節(jié)參數(shù)left_wheel=speedright_wheel=speedangle=eval(input("請(qǐng)輸入歸一化后的角度:"))if0<angle<=1:

right_wheel=(1-angle*kx)*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)elif-1<=angle<=0:

left_wheel=(1-abs(angle*kx))*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:

print("輸入轉(zhuǎn)角信息不是歸一化數(shù)據(jù)")縮進(jìn):一行代碼開(kāi)始前的空白區(qū)域,表達(dá)程序的格式框架02—Python基本語(yǔ)法元素#實(shí)例2.2Steer.py智能車差速轉(zhuǎn)向speed=20#設(shè)定車輪直線行駛速度kx=0.85#調(diào)節(jié)參數(shù)left_wheel=speedright_wheel=speedangle=eval(input("請(qǐng)輸入歸一化后的角度:"))if-1<=angle<=1:if0<angle<=1:

right_wheel=(1-angle*kx)*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:

left_wheel=(1-abs(angle*kx))*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:

print("輸入轉(zhuǎn)角信息不是歸一化數(shù)據(jù)")多層縮進(jìn):表示程序語(yǔ)句多層從屬關(guān)系02—Python基本語(yǔ)法元素縮進(jìn)表達(dá)程序的格式框架-嚴(yán)格明確:縮進(jìn)是語(yǔ)法的一部分,縮進(jìn)不正確程序運(yùn)行錯(cuò)誤-

所屬關(guān)系:表達(dá)代碼間包含和層次關(guān)系的唯一手段-

長(zhǎng)度一致:程序內(nèi)一致即可,一般用4個(gè)空格或1個(gè)TAB縮進(jìn):02—Python基本語(yǔ)法元素變量是保存和表示數(shù)據(jù)值的一種語(yǔ)法元素,在程序中十分常見(jiàn)。變量的值是可以改變的,能夠通過(guò)賦值(使用“=”

表達(dá))方式被修改,例如:speed=20kx=0.85left_wheel=speedright_wheel=speed變量:02—Python基本語(yǔ)法元素用來(lái)保存和表示數(shù)據(jù)的占位符號(hào)-變量采用標(biāo)識(shí)符(名字)來(lái)表示,關(guān)聯(lián)標(biāo)識(shí)符的過(guò)程叫命名

“speed“是變量名字-

可以使用等號(hào)(=)給變量賦值或修改值,=被稱為賦值符號(hào)

angle

=0.5#給變量angle賦值0.5變量:02—Python基本語(yǔ)法元素關(guān)聯(lián)標(biāo)識(shí)符的過(guò)程-命名規(guī)則:大小寫(xiě)字母、數(shù)字、下劃線和中文等字符及組合

如:right_wheel,Python_Great,這是門(mén)Python好課-

注意事項(xiàng):大小寫(xiě)敏感、首字符不能是數(shù)字、不與保留字相同

Right_wheel和right_wheel是不同變量,123Python是不合法的命名:02—Python基本語(yǔ)法元素#實(shí)例2.2Steer.py智能車差速轉(zhuǎn)向speed=20#設(shè)定車輪直線行駛速度kx=0.85

#調(diào)節(jié)參數(shù)left_wheel=speedright_wheel=speedangle=eval(input("請(qǐng)輸入歸一化后的角度:"))if0<angle<=1:#右轉(zhuǎn)向

right_wheel=(1-angle*kx)*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)elif-1<=angle<=0:#左轉(zhuǎn)向

left_wheel=(1-abs(angle*kx))*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:print("輸入轉(zhuǎn)角信息不是歸一化數(shù)據(jù)")命名:程序中用于保存和表示數(shù)據(jù)的占位符號(hào)02—Python基本語(yǔ)法元素保留字:被編程語(yǔ)言內(nèi)部定義并保留使用的標(biāo)識(shí)符-Python語(yǔ)言有35個(gè)保留字(也叫關(guān)鍵字)

if,elif,else,in……-

保留字是編程語(yǔ)言的基本單詞,大小寫(xiě)敏感

if

是保留字,If

是變量02—Python基本語(yǔ)法元素andelifimportraiseglobalaselseinreturnnonlocalassertexceptistryTruebreakfinallylambdawhileFalseclassfornotwithNonecontinuefromoryieldasyncdefifpassdelawait(27/35)保留字:被編程語(yǔ)言內(nèi)部定義并保留使用的標(biāo)識(shí)符02—Python基本語(yǔ)法元素

Python語(yǔ)言中,=表示“賦值”,即將等號(hào)右側(cè)的值計(jì)算后將結(jié)果值賦給左側(cè)變量,包含“=”

的語(yǔ)句稱為“賦值語(yǔ)句”;同步賦值語(yǔ)句:同時(shí)給多個(gè)變量賦值

<變量1>,…,<變量N>=<表達(dá)式1>,…,<表達(dá)式N>

如:a,b=3,5賦值語(yǔ)句語(yǔ)句元素:02—Python基本語(yǔ)法元素例:將變量x和y交換采用單個(gè)賦值,需要3行語(yǔ)句:即通過(guò)一個(gè)臨時(shí)變量t緩存x的原始值,然后將y值賦給x,再將x的原始值通過(guò)t賦值給y。采用同步賦值語(yǔ)句,僅需要一行代碼:賦值語(yǔ)句語(yǔ)句元素:02—Python基本語(yǔ)法元素分支語(yǔ)句是控制程序運(yùn)行的一類重要語(yǔ)句,它的作用是根據(jù)判斷條件選擇程序執(zhí)行路徑;分支語(yǔ)句包括:?jiǎn)畏种?、二分支和多分?

單分支語(yǔ)句是最簡(jiǎn)單的分支語(yǔ)句,使用方式如下:if<條件>:<語(yǔ)句塊>>>>

x=18>>>ifx>0:

output=x分支語(yǔ)句語(yǔ)句元素:02—Python基本語(yǔ)法元素二分支語(yǔ)句:分支語(yǔ)句語(yǔ)句元素:02—Python基本語(yǔ)法元素多分支語(yǔ)句#實(shí)例2.2Steer.py智能車差速轉(zhuǎn)向speed=20#設(shè)定車輪直線行駛速度kx=0.85

#調(diào)節(jié)參數(shù)left_wheel=speedright_wheel=speedangle=eval(input("請(qǐng)輸入歸一化后的角度:"))if0<angle<=1:#右轉(zhuǎn)向right_wheel=(1-angle*kx)*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)elif-1<=angle<=0:#左轉(zhuǎn)向left_wheel=(1-abs(angle*kx))*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:print("輸入轉(zhuǎn)角信息不是歸一化數(shù)據(jù)")02—Python基本語(yǔ)法元素作用:獲得用戶輸入input()函數(shù)可以包含一些提示性文字

<變量>=input(<提示性文字>)input()函數(shù)>>>ang=input("請(qǐng)輸入歸一化后的角度:")請(qǐng)輸入歸一化后的角度:0.1>>>

ang‘0.1’>>>float(

ang)0.1#如果沒(méi)有輸入任何信息,直接按回車鍵,則把空字符串賦給ang基本輸入輸出函數(shù):02—Python基本語(yǔ)法元素input()函數(shù)#實(shí)例2.2Steer.py智能車差速轉(zhuǎn)向speed=20#設(shè)定車輪直線行駛速度kx=0.85

#調(diào)節(jié)參數(shù)left_wheel=speedright_wheel=speedangle=eval(input("請(qǐng)輸入歸一化后的角度:"))if0<angle<=1:#右轉(zhuǎn)向right_wheel=(1-angle*kx)*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)elif-1<=angle<=0:#左轉(zhuǎn)向left_wheel=(1-abs(angle*kx))*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:print("輸入轉(zhuǎn)角信息不是歸一化數(shù)據(jù)")02—Python基本語(yǔ)法元素-eval()函數(shù)的基本使用格式:

eval(<字符串或字符串變量>)

去掉參數(shù)最外側(cè)引號(hào)>>>

eval('"1+2"')"1+2">>>

eval('print("Hello")')Hello>>>

eval("1")1>>>

eval("1+2")3eval()評(píng)估函數(shù)02—Python基本語(yǔ)法元素eval()函數(shù)經(jīng)常和input()函數(shù)一起使用,用來(lái)獲取用戶輸入的數(shù)字,使用方式如下:<變量>=eval(input(<提示性文字>))a=eval(input("請(qǐng)輸出考試分?jǐn)?shù):"))ifa>=60:

print("及格")else:

print("不及格")input()函數(shù)也可以和int()、float()函數(shù)結(jié)合使用eval()評(píng)估函數(shù)02—Python基本語(yǔ)法元素print()函數(shù)用于輸出運(yùn)算結(jié)果print()函數(shù)print(*objects,sep='',end='\n',file=sys.stdout,flush=False)objects:可選參數(shù),表示要輸出的對(duì)象,可以是各種數(shù)據(jù)類型的變量、常量;sep:可選參數(shù),表示分隔符,默認(rèn)為

‘’(空格);end:可選參數(shù),表示輸出結(jié)束后要添加的字符,默認(rèn)為

‘\n’(換行符);file:可選參數(shù),表示要寫(xiě)入的文件對(duì)象,默認(rèn)為sys.stdout(標(biāo)準(zhǔn)輸出);flush:可選參數(shù),表示是否強(qiáng)制刷新輸出,默認(rèn)為False。*objects前面的*表示可以有可變數(shù)量對(duì)象個(gè)數(shù)基本輸入輸出函數(shù):02—Python基本語(yǔ)法元素>>>

print("強(qiáng)國(guó)有我")強(qiáng)國(guó)有我>>>

value

=

123.456>>>print(value,value,value)123.456

123.456

123.456print()函數(shù)基本輸入輸出函數(shù):02—Python基本語(yǔ)法元素end參數(shù)print(<待輸出內(nèi)容>,end="<增加的輸出結(jié)尾>")>>>a=54

>>>print(a,

end=".")54.>>>print(a,

end="%")54%print()函數(shù)基本輸入輸出函數(shù):02—Python基本語(yǔ)法元素#實(shí)例2.2Steer.py智能車差速轉(zhuǎn)向speed=20#設(shè)定車輪直線行駛速度kx=0.85

#調(diào)節(jié)參數(shù)left_wheel=speedright_wheel=speedangle=eval(input("請(qǐng)輸入歸一化后的角度:"))if0<angle<=1:#右轉(zhuǎn)向right_wheel=(1-angle*kx)*speed

print("right_speed:",right_wheel,"left_speed:",left_wheel)elif-1<=angle<=0:#左轉(zhuǎn)向left_wheel=(1-abs(angle*kx))*speed

print("right_speed:",right_wheel,"left_speed:",left_wheel)else:

print("輸入轉(zhuǎn)角信息不是歸一化數(shù)據(jù)")02—Python基本語(yǔ)法元素Python程序會(huì)經(jīng)常使用當(dāng)前程序之外已有的功能代碼,這個(gè)過(guò)程叫“引用”。Python語(yǔ)言使用import保留字引用當(dāng)前程序以外的功能庫(kù),使用方式如下:

import<功能庫(kù)名稱>功能庫(kù)引用:02—Python基本語(yǔ)法元素第一種:import<庫(kù)名>使用庫(kù)中函數(shù)格式:<庫(kù)名>.<函數(shù)名>(<函數(shù)參數(shù)>)第二種:from<庫(kù)名>import<函數(shù)名,函數(shù)名,…>from<庫(kù)名>import*#*是通配符,表示所有函數(shù)。使用庫(kù)中函數(shù)格式:<函數(shù)名>(<函數(shù)參數(shù)>)02—Python基本語(yǔ)法元素功能庫(kù)引用:010203程序基本設(shè)計(jì)方法python基本語(yǔ)法結(jié)構(gòu)python基本數(shù)據(jù)類型目錄第42頁(yè)3.1數(shù)字類型3.2math庫(kù)3.5time庫(kù)3.3字符串類型03python基本數(shù)據(jù)類型目錄第43頁(yè)3.4字符串類型格式化控制3.1數(shù)字類型3.2math庫(kù)3.5time庫(kù)3.3字符串類型03python基本數(shù)據(jù)類型目錄第44頁(yè)3.4字符串類型格式化控制Python語(yǔ)言支持多種數(shù)據(jù)類型最簡(jiǎn)單的包括數(shù)字類型、字符串類型;復(fù)雜的包括元組類型、集合類型、列表類型、字典類型等(第5章內(nèi)容)。03—Python基本數(shù)據(jù)類型Python語(yǔ)言包括三種數(shù)字類型整數(shù)類型浮點(diǎn)數(shù)類型復(fù)數(shù)類型1010是一個(gè)整數(shù)類型,10.10是一個(gè)浮點(diǎn)數(shù)類型,10+10j是一個(gè)復(fù)數(shù)類型。3.1數(shù)字類型整數(shù)類型與數(shù)學(xué)中整數(shù)的概念一致-可正可負(fù),沒(méi)有取值范圍限制-

pow(x,y)函數(shù):計(jì)算xy,想算多大算多大>>>

pow(2,100)1267650600228229401496703205376>>>

pow(2,pow(2,15))1415461031044954789001553……3.1數(shù)字類型整數(shù)類型有4種進(jìn)制表示:十進(jìn)制、二進(jìn)制、八進(jìn)制和十六進(jìn)制。默認(rèn)情況,整數(shù)采用十進(jìn)制,其他進(jìn)制需要增加引導(dǎo)符號(hào)。不同進(jìn)制的整數(shù)之間可以直接運(yùn)算3.1數(shù)字類型整數(shù)類型浮點(diǎn)數(shù)兩種表示方法:小數(shù)點(diǎn)一般形式;科學(xué)計(jì)數(shù)法表示。例如:浮點(diǎn)數(shù)123.456,兩種表示方式如下:一般形式:123.456科學(xué)計(jì)數(shù)法:1.23456e23.1數(shù)字類型浮點(diǎn)數(shù)類型與數(shù)學(xué)中實(shí)數(shù)的概念一致帶有小數(shù)點(diǎn)及小數(shù)的數(shù)字Python語(yǔ)言中的浮點(diǎn)數(shù)類型必須帶有小數(shù)部分,小數(shù)部分可以是0。例如:1010是整數(shù),1010.0是浮點(diǎn)數(shù)。3.1數(shù)字類型浮點(diǎn)數(shù)類型-

浮點(diǎn)數(shù)取值范圍和小數(shù)精度都存在限制,

取值范圍數(shù)量級(jí)約-10307至10308,精度數(shù)量級(jí)10-16,滿足大部分常規(guī)計(jì)算要求。浮點(diǎn)數(shù)間運(yùn)算存在不確定尾數(shù),不是bug>>>0.1+0.30.4>>>0.1+0.20.30000000000000004不確定尾數(shù)3.1數(shù)字類型浮點(diǎn)數(shù)類型浮點(diǎn)數(shù)間運(yùn)算存在不確定尾數(shù),不是bug0.1用二進(jìn)制表示是一個(gè)無(wú)限的小數(shù),計(jì)算機(jī)只能截取其中的53位,無(wú)限接近0.1,但并不真正等于0.10.00011001100110011001100110011001100110011001100110011010(二進(jìn)制表示)Python用53位二進(jìn)制表示小數(shù)部分0.1000000000000000055511151231257827021181583404541015625(十進(jìn)制表示)0.1+0.2二進(jìn)制表示小數(shù),可以無(wú)限接近,但不完全相同結(jié)果無(wú)限接近0.3,但可能存在尾數(shù)3.1數(shù)字類型浮點(diǎn)數(shù)類型-round(x,d):對(duì)x四舍五入,d是小數(shù)截取位數(shù)-浮點(diǎn)數(shù)間運(yùn)算與比較用round()函數(shù)輔助-

不確定尾數(shù)一般發(fā)生在10-16左右,round()十分有效>>>

round(0.1+0.2,1)==0.3True3.1數(shù)字類型浮點(diǎn)數(shù)類型浮點(diǎn)數(shù)間運(yùn)算存在不確定尾數(shù)>>>0.1+0.2==0.3False科學(xué)計(jì)數(shù)法使用字母e或者E作為冪的符號(hào),以10為基數(shù),含義如下:

<a>e<b>=a*10b

1.02e3值為1020.0;1.02E-3值為0.00102。Python浮點(diǎn)數(shù)類型的數(shù)值范圍和小數(shù)精度受不同計(jì)算機(jī)系統(tǒng)的限制。除高精度科學(xué)計(jì)算外的絕大部分運(yùn)算來(lái)說(shuō),浮點(diǎn)數(shù)類型的數(shù)值范圍和小數(shù)精度是滿足要求的。3.1數(shù)字類型浮點(diǎn)數(shù)類型與數(shù)學(xué)中的復(fù)數(shù)概念一致,z=a+bj,

a是實(shí)數(shù)部分,b是虛數(shù)部分,a和b都是浮點(diǎn)類型,虛數(shù)部分用j或者J標(biāo)識(shí)。

示例:12.3+4j,-5.6+7j,2.0+1j

當(dāng)b為1時(shí),1不能省略,即1j表示復(fù)數(shù),而j則表示Python程序中的一個(gè)變量。3.1數(shù)字類型復(fù)數(shù)類型z=1.14e-4+3.6e+76j(實(shí)部和虛部?)對(duì)于復(fù)數(shù)z,可以用z.real獲得實(shí)數(shù)部分,z.imag獲得虛數(shù)部分。>>>z=1.14e-4+3.6e+76j>>>z.real0.000114>>>

z.imag3.6e+763.1數(shù)字類型復(fù)數(shù)類型操作符描述x+yx與y之和x-yx與y之差x*yx與y之積x/yx與y之商,(10/3=3.3333333333333335)x//yx與y之整數(shù)商,即:不大于x與y之商的最大整數(shù)10//3=3x%yx與y之商的余數(shù),也稱為模運(yùn)算10%3=1-xx的負(fù)值,即:x*(-1)+xx本身x**yx的y次冪,即:xy9個(gè)基本的數(shù)值運(yùn)算操作符3.1數(shù)字類型操作符描述x+=yx=x+yx-=yx與y之差,x=x-yx*=yx與y之積,x=x*yx/=yx與y之商,x=x/yx//=yx與y之整數(shù)商,x=x//yx%=yx與y之商的余數(shù),也稱為模運(yùn)算,x=x%yx**=yx的y次冪,即:xy增強(qiáng)賦值操作符簡(jiǎn)化了代碼。3.1數(shù)字類型二元增強(qiáng)運(yùn)算操作符三種類型存在一種逐漸“擴(kuò)展”的關(guān)系:

整數(shù)->浮點(diǎn)數(shù)->復(fù)數(shù)(整數(shù)是浮點(diǎn)數(shù)特例,浮點(diǎn)數(shù)是復(fù)數(shù)特例)不同數(shù)字類型之間可以進(jìn)行混合運(yùn)算,運(yùn)算后生成結(jié)果為最寬類型。

123+4.0=127.0(整數(shù)+浮點(diǎn)數(shù)=浮點(diǎn)數(shù))3.1數(shù)字類型三種類型的混合運(yùn)算數(shù)字類型之間相互運(yùn)算所生成的結(jié)果是“更寬”的類型,基本規(guī)則是:整數(shù)之間運(yùn)算,如果數(shù)學(xué)意義上的結(jié)果是小數(shù),結(jié)果是浮點(diǎn)數(shù);整數(shù)之間運(yùn)算,如果數(shù)學(xué)意義上的結(jié)果是整數(shù),結(jié)果是整數(shù);整數(shù)和浮點(diǎn)數(shù)混合運(yùn)算,輸出結(jié)果是浮點(diǎn)數(shù);整數(shù)或浮點(diǎn)數(shù)與復(fù)數(shù)運(yùn)算,輸出結(jié)果是復(fù)數(shù)。3.1數(shù)字類型三種類型的混合運(yùn)算函數(shù)描述abs(x)x的絕對(duì)值

abs(-8.01)=8.01divmod(x,y)(x//y,x%y),輸出為二元組形式(也稱為元組類型),divmod(10,3)=3,1pow(x,y[,z])冪余:(x**y)%z,[..]表示該參數(shù)可以省略,即:pow(x,y),它與x**y相同,pow(2,9,10)=2round(x[,ndigits])對(duì)x四舍五入,保留ndigits位小數(shù)。round(x)返回四舍五入的整數(shù)值round(-9.4531)=-9,round(-9.4531,2)=-9.45max(x1,x2,…,xn)x1,x2,…,xn的最大值,n沒(méi)有限定min(x1,x2,…,xn)x1,x2,…,xn的最小值,n沒(méi)有限定3.1數(shù)字類型Python內(nèi)置數(shù)值運(yùn)算函數(shù)函數(shù)描述int(x)將x轉(zhuǎn)換為整數(shù),舍棄小數(shù)部分,x可以是浮點(diǎn)數(shù)或字符串,int(100.65)=100,int("100")=100float(x)將x轉(zhuǎn)換為浮點(diǎn)數(shù),x可以是整數(shù)或字符串,float(10)=10.0,float("10")=10.0,float("10.01")=10.01complex(re[,im])生成一個(gè)復(fù)數(shù),實(shí)部為re,虛部為im,re可以是整數(shù)、浮點(diǎn)數(shù),im可以是整數(shù)或浮點(diǎn)數(shù)但不能為字符串,complex(4)=4+0J數(shù)值運(yùn)算操作符可以隱式地轉(zhuǎn)換輸出結(jié)果的數(shù)字類型;例如,兩個(gè)整數(shù)采用運(yùn)算符“/”的除法將可能輸出浮點(diǎn)數(shù)結(jié)果。通過(guò)內(nèi)置的數(shù)字類型轉(zhuǎn)換函數(shù)可以顯式地在數(shù)字類型之間進(jìn)行轉(zhuǎn)換。

3.1數(shù)字類型數(shù)字類型的轉(zhuǎn)換函數(shù)type(x):

返回x的類型,適用于所有類型的判斷。>>>

type(100)<class'int'>>>>

type(50.0)<class'float'>>>>

type(80+0j)<class'complex'>>>>

z=20-1j>>>

type(z)<class'complex'>3.1數(shù)字類型數(shù)字類型的判斷3.1數(shù)字類型3.2math庫(kù)3.5time庫(kù)3.3字符串類型03python基本數(shù)據(jù)類型目錄第64頁(yè)3.4字符串類型格式化控制math庫(kù)是Python提供的內(nèi)置數(shù)學(xué)類函數(shù)庫(kù);math庫(kù)不支持復(fù)數(shù)類型;math庫(kù)一共提供了4個(gè)數(shù)學(xué)常數(shù)和44個(gè)函數(shù);44個(gè)函數(shù)共分為4類,包括:16個(gè)數(shù)值表示函數(shù)、8個(gè)冪對(duì)數(shù)函數(shù)、16個(gè)三角對(duì)數(shù)函數(shù)和4個(gè)高等特殊函數(shù)。3.2math庫(kù)第一種方法:

importmath

對(duì)math庫(kù)中函數(shù)采用math.<b>()形式使用第二種方法:frommathimport<函數(shù)名>對(duì)math庫(kù)中函數(shù)可以直接采用<函數(shù)名>()形式使用>>>importmath>>>math.ceil(10.2)11>>>frommathimportceil>>>ceil(10.2)11>>>frommathimport*>>>ceil(10.2)113.2math庫(kù)math庫(kù)引用常數(shù)數(shù)學(xué)表示描述math.pi

π圓周率,值為3.141592653589793math.ee自然對(duì)數(shù),值為2.718281828459045math.inf?正無(wú)窮大,負(fù)無(wú)窮大為-math.infmath.nan

非浮點(diǎn)數(shù)標(biāo)記,NaN(NotaNumber)3.2math庫(kù)math庫(kù)包含4個(gè)常用常數(shù)math庫(kù)包括16個(gè)數(shù)值表示函數(shù)函數(shù)數(shù)學(xué)表示描述math.fabs(x)返回x的絕對(duì)值math.fmod(x,y)x%y返回x與y的模math.fsum([x,y,…])x+y+…浮點(diǎn)數(shù)精確求和math.ceil(x)向上取整,返回不小于x的最小整數(shù)math.floor(x)向下取證,返回不大于x的最大整數(shù)math.factorial(x)x!返回x的階乘,如果x是小數(shù)或負(fù)數(shù),返回ValueErrormath.gcd(a,b)

返回a與b的最大公約數(shù)math.frexp(x)x=m*2e返回(m,e),當(dāng)x=0,返回(0.0,0)math.ldexp(x,i)x*2i返回x*2i運(yùn)算值,math.frepx(x)函數(shù)的反運(yùn)算math.modf(x)

返回x的小數(shù)和整數(shù)部分math.trunc(x)

返回x的整數(shù)部分math.copysign(x,y)用數(shù)值y的正負(fù)號(hào)替換數(shù)值x的正負(fù)號(hào)math.isclose(a,b)

比較a和b的相似性,返回True或Falsemath.isfinite(x)

當(dāng)x為無(wú)窮大,返回True;否則,返回Falsemath.isinf(x)

當(dāng)x為正數(shù)或負(fù)數(shù)無(wú)窮大,返回True;否則,返回Falsemath.isnan(x)

當(dāng)x是NaN,返回True;否則,返回False3.2math庫(kù)函數(shù)數(shù)學(xué)表示描述math.pow(x,y)xy返回x的y次冪math.exp(x)ex返回e的x次冪,e是自然對(duì)數(shù)

math.expm1(x)ex-1返回e的x次冪減1math.sqrt(x)返回x的平方根math.log(x[,base])logbasex返回x的對(duì)數(shù)值,只輸入x時(shí),返回自然對(duì)數(shù),即lnxmath.log1p(x)ln(1+x)返回1+x的自然對(duì)數(shù)值math.log2(x)logx返回x的2對(duì)數(shù)math.log10(x)log10x返回x的10對(duì)數(shù)值3.2math庫(kù)math庫(kù)包括8個(gè)冪對(duì)數(shù)函數(shù)函數(shù)數(shù)學(xué)表示描述math.degrees(x)

角度x的弧度值轉(zhuǎn)角度值math.radians(x)

角度x的角度值轉(zhuǎn)弧度值math.hypot(x,y)返回(x,y)坐標(biāo)到原點(diǎn)(0,0)的距離math.sin(x)sinx返回x的正弦函數(shù)值,x是弧度值math.cos(x)cosx返回x的余弦函數(shù)值,x是弧度值math.tan(x)tanx返回x的正切函數(shù)值,x是弧度值math.asin(x)arcsinx返回x的反正弦函數(shù)值,x是弧度值math.acos(x)arccosx返回x的反余弦函數(shù)值,x是弧度值

math.atan(x)arctanx返回x的反正切函數(shù)值,x是弧度值math.atan2(y,x)arctany/x返回y/x的反正切函數(shù)值,x是弧度值math.sinh(x)sinhx返回x的雙曲正弦函數(shù)值math.cosh(x)coshx返回x的雙曲余弦函數(shù)值math.tanh(x)tanhx返回x的雙曲正切函數(shù)值math.asinh(x)arcsinhx返回x的反雙曲正弦函數(shù)值math.acosh(x)arccoshx返回x的反雙曲余弦函數(shù)值math.atanh(x)arctanhx返回x的反雙曲正切函數(shù)值3.2math庫(kù)math庫(kù)包括16個(gè)三角運(yùn)算函數(shù)函數(shù)數(shù)學(xué)表示描述math.erf(x)高斯誤差函數(shù),應(yīng)用于概率論、統(tǒng)計(jì)學(xué)等領(lǐng)域math.erfc(x)余補(bǔ)高斯誤差函數(shù),math.erfc(x)=1-math.erf(x)math.gamma(x)伽瑪(Gamma)函數(shù),也叫歐拉第二積分函數(shù)math.lgamma(x)ln(gamma(x))伽瑪函數(shù)的自然對(duì)數(shù)3.2math庫(kù)math庫(kù)包括4個(gè)高等特殊函數(shù)實(shí)例2.3求排列數(shù)和組合數(shù)排列數(shù)是指從n個(gè)不同元素中取出k個(gè)元素進(jìn)行排列的排列數(shù),通常表示為A(n,k)或P(n,k)。排列數(shù)的計(jì)算公式為A(n,k)=n!/(n-k)!組合數(shù)是指從n個(gè)不同元素中取出k個(gè)元素進(jìn)行組合的組合數(shù),通常表示為C(n,k)。組合數(shù)的計(jì)算公式為C(n,k)=n!/(k!*(n-k)!)3.2math庫(kù)運(yùn)行結(jié)果:請(qǐng)輸入總元素n和需要提取的元素k,數(shù)字用逗號(hào)分隔:6,3從6個(gè)不同元素中取出3個(gè)元素進(jìn)行組合的組合數(shù)為20從6個(gè)不同元素中取出3個(gè)元素進(jìn)行排列的排列數(shù)為1203.2math庫(kù)實(shí)例2.3求排列數(shù)和組合數(shù)3.1數(shù)字類型3.2math庫(kù)3.5time庫(kù)3.3字符串類型03python基本數(shù)據(jù)類型目錄第74頁(yè)3.4字符串類型格式化控制字符串類型的表示由0個(gè)到多個(gè)字符組成的有序字符序列,用一對(duì)雙引號(hào)(")或單引號(hào)(')

或者一對(duì)三單引號(hào)或三雙引號(hào)括起來(lái):一對(duì)三單引號(hào)(''')可以表示單行或多行字符串>>>

print('智能汽車競(jìng)賽')智能汽車競(jìng)賽>>>print("智能汽車競(jìng)賽")智能汽車競(jìng)賽>>>print('''智能汽車競(jìng)賽''')智能汽車競(jìng)賽>>>print("智能"汽車"競(jìng)賽")SyntaxError:invalidsyntax>>>print('''智能"汽車"競(jìng)賽''')智能"汽車"競(jìng)賽>>>print('智能"汽車"競(jìng)賽')智能"汽車"競(jìng)賽>>>print('''大學(xué)生智能"汽車"競(jìng)賽''')大學(xué)生智能"汽車"競(jìng)賽>>>print('大學(xué)生智能"汽車"競(jìng)賽')SyntaxError:EOLwhilescanningstringliteral3.3字符串類型input將用戶輸入的內(nèi)容當(dāng)著字符串類型;print函數(shù)可以直接打印字符串。>>>university=input("請(qǐng)輸入賽車隊(duì)校名:")請(qǐng)輸入賽車道校名:BeihangUniversity>>>print(university)"BeihangUniversity"3.3字符串類型字符串輸入和輸出常用方式正向遞增序號(hào):如果字符串長(zhǎng)度為L(zhǎng),最左側(cè)字符序號(hào)為0,向右依次遞增,最右側(cè)字符序號(hào)為L(zhǎng)-1;反向遞減序號(hào):如果字符串長(zhǎng)度為L(zhǎng),最右側(cè)字符序號(hào)為-1,向左依次遞減,最左側(cè)字符序號(hào)為-L。;Python智能汽車競(jìng)賽01234567891011-12-11-10-9-8-7-6-5-4-3-2-1>>>name=“Python智能汽車競(jìng)賽">>>

name[0]'P'>>>

name[0],name[7],name[-1](‘P’,‘能’,'賽')3.3字符串類型字符串的兩種序號(hào)體系<string>[N:M]格式:表示字符串string從N到M(不包含M)的子字符串,其中N和M為字符串的索引序號(hào),可以混合使用正向遞增序號(hào)和反向遞減序號(hào),如N缺失表示至開(kāi)頭,M缺失表示至末尾。>>>name="Python智能汽車競(jìng)賽">>>print(name[2:-4])thon智能>>>print(name[:6])Python>>>print(name[6:])智能汽車競(jìng)賽>>>print(name[:])Python智能汽車競(jìng)賽>>>print(name[::2])Pto語(yǔ)汽競(jìng)>>>print(name[::-1])賽競(jìng)車汽能智nohtyP<string>[N:M:K]

格式:按步長(zhǎng)切片,K為步長(zhǎng),如果K<0,則從后往前截取。3.3字符串類型字符串的切片(區(qū)間訪問(wèn)方式)

Python語(yǔ)言轉(zhuǎn)義符"

\",與后面相鄰的字符共同組成新的含義。\n:

換行\(zhòng)\:反斜杠\'

:單引號(hào)\":雙引號(hào)\t:制表符Python語(yǔ)言'程序'設(shè)計(jì)>>>print("Python\n語(yǔ)言\t'程序'\t設(shè)計(jì)")>>>print("Python\n語(yǔ)言\t\'程序\'\t設(shè)計(jì)")>>>print(“\”智能車\"")"智能車"3.3字符串類型格式化控制字符操作符描述x+y連接兩個(gè)字符串x與yx*n或者n*x復(fù)制n次字符串xins如果x是s的子串,返回True,否則返回False>>>name="Python語(yǔ)言"+"程序設(shè)計(jì)">>>name'Python語(yǔ)言程序設(shè)計(jì)'>>>"智能車競(jìng)賽"*3''智能車競(jìng)賽智能車競(jìng)賽智能車競(jìng)賽''>>>“競(jìng)賽"innameTrue>>>“大學(xué)生"innameFalse3.3字符串類型字符串的操作符一些以函數(shù)形式提供的字符串處理功能函數(shù)及使用描述len(x)長(zhǎng)度,返回字符串x的長(zhǎng)度

len("一二三456")結(jié)果為6str(x)任意類型x所對(duì)應(yīng)的字符串形式

str(1.25)結(jié)果為"1.25"

str([4,2])結(jié)果為"[4,2]"

hex(x)

oct(x)整數(shù)x的十六進(jìn)制或八進(jìn)制小寫(xiě)形式字符串

hex(425)結(jié)果為"0x1a9"oct(425)結(jié)果為"0o651"3.3字符串類型字符串處理函數(shù)函數(shù)及使用描述chr(u)

u為Unicode編碼,返回其對(duì)應(yīng)的字符ord(x)

x為字符,返回其對(duì)應(yīng)的Unicode編碼chr(u)ord(x)Unicode單字符Unicode和字符是一一對(duì)應(yīng)的3.3字符串類型一些以函數(shù)形式提供的字符串處理功能字符串處理函數(shù)-統(tǒng)一字符編碼,即覆蓋幾乎所有字符的編碼方式;-

從0到1114111

(0x10FFFF)空間,每個(gè)編碼對(duì)應(yīng)一個(gè)字符;-

Python字符串中每個(gè)字符都是Unicode編碼字符。3.3字符串類型Unicode編碼格式如下:

for<var>in<string>:

操作語(yǔ)句輸出結(jié)果:China>>>forcin

"China":

print(c)3.3字符串類型字符串的遍歷操作-“方法”特指<s>.<f>()風(fēng)格中的函數(shù)<f>();方法本身也是函數(shù),但與<s>有關(guān),以<s>.<f>()風(fēng)格使用;-

字符串或字符串變量是<s>,存在一些可用方法。3.3字符串類型字符串處理方法方法描述舉例str.lower()返回字符串str的副本,全部字符小寫(xiě)"AbCdeG".lower()結(jié)果'abcdeg'str.upper()返回字符串str的副本,全部字符d大寫(xiě)"AbCdeG".upper()'ABCDEG'str.split(sep=None)返回一個(gè)列表,由str根據(jù)sep分隔的部分構(gòu)成“10,20,30".split(",")[‘10',‘20',‘30']str.count(sub)返回sub在字符串str中出現(xiàn)的次數(shù)

"buaa".count("a")2str.replace(old,new)返回字符串str的副本,所有old子串被替換為new“BJ".replace(“B",“Bei")'BeiJ'str.center(width[,fillchar])字符串居中函數(shù),fillchar沒(méi)有就

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論