mooc-python語言語法week3-6

week3python

一、類型的概念:程序編程不容許有歧義的數據類型存在,因此對數據進行了劃分,python語言類型分爲,數字類型、字符串類型、元組類型、列表類型、文件類型、字典類型。git

i:數字類型:算法

python語言包括三種基本的數字類型:整數類型,浮點類型和複數類型。編程

      整數類型能夠是十進制、十六進制、二進制和八進制。pow(2,pow(2,15))計算結果有不少不少位,那到底該怎麼判斷有多少位呢?咱們帶着這個疑問去學習本節課。整數類型沒有限制。api

     浮點數類型,在計算機上有專門的浮點數運算模塊,浮點數和整數通常分開不一樣的類型。浮點數精度有限制,不一樣的計算機精度不同,sys.float_info 能夠查看計算機的浮點數精度。所以,咱們只要不是及高度的計算,一搬認爲浮點數也是沒有限制的。數組

科學計數法表示的浮點數96e四、4.3e-三、9.6E五、0.0、-0.三、77.8.安全

    複數類型:app

    三種數字類型的關係:1)存在一種逐漸擴展的關係,整數-》浮點數-》複數(整數是浮點數的特例,浮點數是複數的特例。不一樣數字類型之間能夠進行混合運算,運算後生成結果爲最寬類型。13+4.0=17.0(整數+浮點數=浮點數)框架

        2)三種類型能夠相互轉換int()\float()\complex(x) 將x變爲複數。int(4.5)=4,float(4)=4.0,complex(4)=4+0j,若是將複數像浮點數和整數轉換會報錯。若是須要將複數轉換成整數或者浮點數那須要用到具體的函數將複數的虛部先轉換一下。dom

   數字類型的判斷:type(x)返回x的類型,適合於全部類型的判斷。

   數字類型的運算:整數類型和浮點數類型最爲經常使用。python提供了12個內先運算符和函數,+-* /等等對這兩個類型開展運算。 python經過math庫提供更多的運算。

ii:字符串類型:

      1)字符串也有切片。能夠遍歷字符串中的每個字符。字符串也有不少的函數,例如:upper()將字符串中的字符變成大寫、lower變成小寫、capitalize首字母大寫、strip()將字符串兩端的空格去掉或去掉兩端指定字符、split()按指定的字符來分割字符串爲數組、isdigit()判斷是不是數字類型,若是是返回True不然False、find()按照指定內容來搜索字符串、replace()替換字符串中的內容,字符串有近百的函數咱們這裏沒有一一列出,在實際的工做中滿滿積累字符串使用的函數。 字符串能夠打印出轉義字符或者空格,例如「hello\nworld\nmasisi」print()之後輸出是hello

                                   world

                                  masisi。字符串類型能夠經過+或者*進行鏈接,如:3*「hello」比變爲了‘hellohellohello’。len()函數能夠返回一個字符串的長度,例如:len(「hello」)返回5。大多數數據類型均可以經過str()來轉換成字符串,例如數字類型、浮點數、科學計數法,str(123)「123」 str(12.3)「12.3」 str(123e+10)

 

     2)有一個小例子:輸入一個月份數字,返回對應月份名稱縮寫。

   使用ipo方法進行分析:輸入:輸入月份的數字

                                        處理:利用字符串中基本操做來實現這個功能

                                        輸出:月份名稱縮寫

 

iii:元組類型tuple,元組能夠包含多個元素,多個元素之間用逗號分開,t1=123,456,"hello"數字和字符串只包含list一個元素。元組能夠是空的 t2=(),元組能夠包含一個元素t3=123,元組外側可使用括號,也能夠不使用。

    元組有3個特色:一、元組中元素能夠是不一樣類型,t3=123,4,56,("hello","中國")

                           二、元組中個元素存在前後關係,能夠經過索引方式來訪問元組中的元素。t3[0]

                           三、元組定義後不能更改也不能刪除。

元組的概念接上:與字符串類型相似,能夠經過索引區間來訪問元組中部分元素,t[1:]。與字符串同樣,元組之間可使用+或者*進行運算。

tuple類型可使代碼更安全,若是想要代碼更靈活,那咱們使用列表類型。

IV:列表類型list,

    1)列表的操做:列表能夠像字符串同樣使用+來鏈接兩個序列,使用*來對序列進行整數次重複,索引序列中的元素、區序列的一個字序列(切片),序列中元素個數len(),對序列進行循環列舉 for var in seq:,成員檢查expre  in  seq

          2)列表的操做:list.append(x)將元素x追加到列表最後、list.sort()將列表元素排序、list.reverse()將列表元素反轉、list.index(x)返回第一次出現元素x的所索引值,list.insert(i,x)在位置i處插入新元素x,list.count(x)返回元素x在列表中的數量,list.remove(x)刪除列表中第一次出現的x,list.pop(i)取出列表中位置i的元素並刪除它。對於字符串函數咱們可使用split()將其拆分紅一個列表。

   字符串、元組、列表之間怎樣相互轉換:

        s=「hello」

        list(s)

        tuple(s)

    元組合列表轉換成字符串用到join()

      "".join(list(s))

      "".join(tuple(s))  

二、math庫和random庫和實例

   math庫與random庫-PPT 

三、課後練習

  1)python提供兩種字符串格式化方法,一種是相似c語言的格式化方法%,另外一種是format()方法。python推薦使用format()方法。

week4 python程序之控制結構

一、程序基本結構:草圖,流程圖,順序結構,分支結構,循環結構

二、分支結構分爲單分支機構和雙分支結構

    1)eval函數:用來執行一個字符串表達式,並返回表達式的值

       二次方程求解案例,用到了eval()。如:a,b,c=eval(input("a,b,c")),不然不能連着輸入a,b,c ,得一行一行的輸入。input輸入的數字是字符串的類型,eval(input())輸入的是數字類型

三、多分支結構

   1)if ...else...中嵌套if else ,但處理複雜問題的時候,這種就太麻煩了,因此python中有多分支機構 if elif   else 多分支語句來解決分支結構嵌套問題

   2)二次方程求解案例:考慮a=0即分母爲零的狀況,在分母不爲零的狀況下,考慮 sqrt()=0單根的狀況,sqrt()>0雙根的狀況和sqrt()<0沒有根的狀況

四、異常處理

 1)二次方程求解實例咱們用分支結構來判斷了求根公式是否爲零的幾種狀況,可是若是程序設計的時候每一句話都要用分支結構來判斷其各類狀況,那重要的算法語句將不會清晰易懂,因此咱們不必用分支結構來對一些簡單的常常會出現的問題就行分狀況解決,咱們可使用異常處理。

  2)try:

   ..............

   ..............

    except ZeroDivisionError:

   ......

    except SyntaxError:

    ......

    except:

    ......

    else:

     .........

     ......... 

    finally:

    try 去捕捉代碼異常,例如sqrt()異常,若是捕捉到對應的異常的話,就執行except捕捉到對應異常的語句,try語句後面能夠跟若干個except語句,except也能夠不用寫具體的異常,最後執行finally語句。若是try沒有捕捉到具體的語句,則執行 else後面的語句和finally語句。

   3)二次方程求解案例:except後面捕捉的是一個NameError 錯誤,可是我故意測試一個值的錯誤,看看程序是會拋出異常呢,仍是會崩潰.

    測試結果爲,except只會拋出 後面對應的錯誤,例如except NameError 只會拋出名字錯誤的語句,若是是語法錯誤的語句,則不會拋出,程序仍是會奔潰。    

五、三者最大實例分析

   1)三者最大實例有4種解決辦法,第一種通盤比較,即將每個值與其它的值進行比較,以肯定最大值。if x1>x2 and a1> x3 elif x2>x1 and x2>x3 else x3. 第二種決策樹 先判斷x1>x2 ,若是成立再判斷x1>x3,不然判斷x2>x3.  這兩種方法對於處理3個數字中最大的數還比較好解決,可是解決多餘3個數字的時候就會有問題,算法變得十分複雜。第三種是  順序處理方法,建一個max變量,先將一個變量賦值給max,第四種是 python 內置函數 max函數。 

六、基本循環結構:

  1)for 循環便利列表和字符串,遍歷的時候有累加器,把每一次的值累加起來,再求平均值。for循環在執行過程當中,直接在序列上進行遍歷,而非在內存中生成一個新的序列拷貝進行

      2)for i in range(5):

           ......

   else:

     ...... 

         for else  和try else 的狀況很類似。 for 循環遍歷,若是for 條件不成立了再執行else

七、通用循環構造方法

  聽不懂老師講的,暫時先過吧

八、死循環/嵌套循環

  1)死循環並非沒有好處,while True 和while 1也有其價值

     2)聽不懂,暫時先過吧

九、布爾表達式

    1)布爾操做符:and or not,優先級是not and or

 week5:python編程之代碼複用

一、函數定義和做用、調用與返回

     1) 函數返回單個值或者多個值,經過return返回值來和調用程序進行信息傳遞,也能夠經過函數參數來和調用程序進行信息傳遞(值傳遞和引用傳遞,例如數字類型的傳遞是值傳遞,列表類型的傳遞是引用傳遞)

     2)函數是代碼的一種抽象

二、函數與遞歸

    函數遞歸遠離合練習

三、函數實例

    利用turtle庫和函數遞歸來畫一顆數和多顆樹組成的森林。

    之後用到了再畫

四、課後練習

    繪製一個顯示當前時間的七段數碼館

week6 python編程之組合類型(文件和字典)

 一、文件的基礎

  1)文件和編碼的概念:

  存儲在外部介質上的數據或信息的集合.編碼指的是信息從一種形式轉換成另外一種形式的過程。

 2)文件的基本處理

   打開文件:創建磁盤上的文件與程序中的對象相關聯,經過相關的文件對象得到。file=open(<name><mode>),mode有 r、 w、 a。 rb 、wb 、ab。r+。

   b是二進制,如圖片、視頻、音樂文件等等,都是用二進制存放的。

   文件操做:讀取、寫入、定位、其餘:追加、計算等讀取是指將文件數據讀到計算機內存。寫入是指從計算機內存向文件寫入數據。定位指定位文件讀寫位置。

             讀取:read()整個文件內容的一個字符串 、readline()每次讀取一行、readlines()整個文件內容的列表,每項是以換行符結尾的一行字符串。

                 寫入:write()把含有文本數據或者二進制數據塊的字符串寫入文件中、writelines()針對列表操做,接受一個字符串列表做爲參數,將他們寫入文件,而且行結束符不會自動被加入。

                 文件遍歷:最多見的文件處理方法。通用文件遍歷代碼框架:

  關閉文件:關閉文件即切斷文件與程序的聯繫。寫入磁盤並釋放文件緩衝區

3)文件實例一

   將data.txt中的數值數據,使用turtle庫來繪製動態圖形路徑。

    list(map(float,line.split(',')))函數的意思

4)文件實例二

  將兩個文件合併成一個文件

 動手操做一下這兩個案例和前面的一個案例

5)字典的概念:

6)字典的操做:

爲字典增長一項

訪問字典中的值

刪除字典中的值

字典的遍歷

for key  in students:

     print ("key"+str(students[ke]))

遍歷字典的鍵key .for key in students.keys():

遍歷字典的值value。for key in students.values():

遍歷字典的項。for item in students.items():

遍歷字典的key-value:for item,value in adict.items():

是否一個鍵在字典中,in或者not in

字典的標準操做符:

-,<,>,<=,>=,==,!=,and,or,not

python還提供了豐富的字典方法,其中:

keys():返回一個包含字典全部key的列表

values():返回一個包含字典全部value的列表

Items():返回一個包含全部鍵值的列表

clear():刪除字典中的全部項目

get(key):返回字典中key對應的值

pop(key):刪除並返回字典中key對應的值

update(字典):將字典中的鍵值添加到字典中

7)字典實例一

搜索文件中單詞頻率統計,並繪製成柱形圖

8)字典實例二

用字典結構遍歷存儲兩個通信錄文件

9)課後練習

詞頻統計

相關文章
相關標籤/搜索