亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

python進階

廖雪峰 移動開發工程師
難度中級
時長 3小時33分
學習人數
綜合評分9.20
575人評價 查看評價
9.6 內容實用
9.0 簡潔易懂
9.0 邏輯清晰
  • 任務

    如果沒有定義set方法,就不能對“屬性”賦值,這時,就可以創建一個只讀“屬性”。

    請給Student類加一個grade屬性,根據?score?計算 A(>=80)、B、C(<60)。

    • ?不會了怎么辦

    • 用 @property 修飾 grade 的 get 方法即可實現只讀屬性。

      參考代碼:

      class?Student(object):
      ????def?__init__(self,?name,?score):
      ????????self.name?=?name
      ????????self.__score?=?score
      ????@property
      ????def?score(self):
      ????????return?self.__score
      [email protected]
      ????def?score(self,?score):
      ????????if?score?<?0?or?score?>?100:
      ????????????raise?ValueError('invalid?score')
      ????????self.__score?=?score
      ????@property
      ????def?grade(self):
      ????????if?self.score?<?60:
      ????????????return?'C'
      ????????if?self.score?<?80:
      ????????????return?'B'
      ????????return?'A'
      s?=?Student('Bob',?59)
      print?s.grade
      s.score?=?60
      print?s.grade
      s.score?=?99
      print?s.grade


    查看全部
    0 采集 收起 來源:python中 @property

    2020-07-27

  • 任務

    請繼續完善Rational,使之可以轉型為float。

    • ?不會了怎么辦

    • 將self.p轉型為float類型,再作除法就可以得到float:

      float(self.p) / self.q

      參考代碼:

      class?Rational(object):
      ????def?__init__(self,?p,?q):
      ????????self.p?=?p
      ????????self.q?=?q
      
      ????def?__int__(self):
      ????????return?self.p?//?self.q
      
      ????def?__float__(self):
      ????????return?float(self.p)?/?self.q
      
      print?float(Rational(7,?2))
      print?float(Rational(1,?3))


    查看全部
  • 任務

    Rational類雖然可以做加法,但無法做減法、乘方和除法,請繼續完善Rational類,實現四則運算。

    提示:
    減法運算:__sub__
    乘法運算:__mul__
    除法運算:__div__

    • ?不會了怎么辦

    • 如果運算結果是 6/8,在顯示的時候需要歸約到最簡形式3/4。

      參考代碼:

      def?gcd(a,?b):
      ????if?b?==?0:
      ????????return?a
      ????return?gcd(b,?a?%?b)
      
      class?Rational(object):
      ????def?__init__(self,?p,?q):
      ????????self.p?=?p
      ????????self.q?=?q
      ????def?__add__(self,?r):
      ????????return?Rational(self.p?*?r.q?+?self.q?*?r.p,?self.q?*?r.q)
      ????def?__sub__(self,?r):
      ????????return?Rational(self.p?*?r.q?-?self.q?*?r.p,?self.q?*?r.q)
      ????def?__mul__(self,?r):
      ????????return?Rational(self.p?*?r.p,?self.q?*?r.q)
      ????def?__div__(self,?r):
      ????????return?Rational(self.p?*?r.q,?self.q?*?r.p)
      ????def?__str__(self):
      ????????g?=?gcd(self.p,?self.q)
      ????????return?'%s/%s'?%?(self.p?/?g,?self.q?/?g)
      ????__repr__?=?__str__
      
      r1?=?Rational(1,?2)
      r2?=?Rational(1,?4)
      print?r1?+?r2
      print?r1?-?r2
      print?r1?*?r2
      print?r1?/?r2


    查看全部
  • Python內置的?sorted()函數可對list進行排序:

    >>>sorted([36, 5, 12, 9, 21])
    [5, 9, 12, 21, 36]

    但?sorted()也是一個高階函數,它可以接收一個比較函數來實現自定義排序,比較函數的定義是,傳入兩個待比較的元素 x, y,如果 x 應該排在 y 的前面,返回 -1,如果 x 應該排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。

    調用 sorted() 并傳入 reversed_cmp 就可以實現倒序排序:

    >>>?sorted([36,?5,?12,?9,?21],?reversed_cmp)
    [36,?21,?12,?9,?5]

    sorted()也可以對字符串進行排序,字符串默認按照ASCII大小來比較:

    例如:

    >>>?sorted(['bob',?'about',?'Zoo',?'Credit'])
    ['Credit',?'Zoo',?'about',?'bob']

    'Zoo'排在'about'之前是因為'Z'的ASCII碼比'a'小。


    查看全部
  • filter()函數是?Python?內置的另一個有用的高階函數,filter()函數接收一個函數 f?和一個list,這個函數?f?的作用是對每個元素進行判斷,返回 True或 False,filter()根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。

    注意:?s.strip(rm) 刪除 s 字符串中開頭、結尾處的 rm 序列的字符。

    查看全部
  • print(str.upper())#?把所有字符中的小寫字母轉換成大寫字母
    print(str.lower())?#?把所有字符中的大寫字母轉換成小寫字母
    print(str.capitalize())?#?把第一個字母轉化為大寫字母,其余小寫
    print(str.title())??#?把每個單詞的第一個字母轉化為大寫,其余小寫

    例如:s[0].upper()表示第一個字母大寫

    s[1:].lower表示從第二位開始往后的元素大寫字母轉換為小寫字母

    查看全部
  • map()是 Python 內置的高階函數,它接收一個函數 f?和一個?list,并通過把函數 f 依次作用在 list 的每個元素上,得到一個新的 list 并返回。

    注意:map()函數不改變原有的 list,而是返回一個新的 list。

    利用map()函數,可以把一個 list 轉換為另一個 list,只需要傳入轉換函數。

    查看全部
  • 利用filter(),可以完成很多有用的功能,例如,刪除 None 或者空字符串:

    def?is_not_empty(s):
    ????return?s?and?len(s.strip())?>?0
    filter(is_not_empty,?['test',?None,?'',?'str',?'??',?'END'])

    結果:['test', 'str', 'END']

    注意:?s.strip(rm) 刪除 s 字符串中開頭、結尾處的 rm 序列的字符。

    當rm為空時,默認刪除空白符(包括'\n', '\r', '\t', ' '),如下:

    a?=?'?????123'
    a.strip()

    結果:?'123'

    a='\t\t123\r\n'
    a.strip()

    結果:'123'


    查看全部
  • reduce()函數也是Python內置的一個高階函數。reduce()函數接收的參數和 map()類似,一個函數 f,一個list,但行為和 map()不同,reduce()傳入的函數 f 必須接收兩個參數,reduce()對list的每個元素反復調用函數f,并返回最終結果值

    查看全部
  • import math


    def is_sqr(x):

    ? ? return len(str(math.sqrt(x)).split(".")[1]) == 1


    print filter(is_sqr, range(1, 101))


    查看全部
  • 高階函數:能接收函數做參數的函數

    1. 變量可以指向函數

    2. 函數的參數可以接受變量

    3. 一個函數可以接受另一個函數作為參數

    4. 能接收函數做參數的函數就是高階函數


    查看全部
  • 一個py文件稱為一個模塊

    不同的文件夾稱為包

    包中包含多個模塊,以及__init__.py文件

    import from import as


    查看全部
  • 閉包和裝飾器講解:https://www.bilibili.com/video/BV1JW411i7HR?from=search&seid=11281653268329324661

    查看全部
  • 任務

    斐波那契數列是由 0, 1, 1, 2, 3, 5, 8...構成。

    請編寫一個Fib類,Fib(10)表示數列的前10個元素,print Fib(10)?可以打印出數列的前 10 個元素,len(Fib(10))可以正確返回數列的個數10。

    • ?不會了怎么辦

    • 需要根據num計算出斐波那契數列的前N個元素。

      參考代碼:

      class?Fib(object):
      ????def?__init__(self,?num):
      ????????a,?b,?L?=?0,?1,?[]
      ????????for?n?in?range(num):
      ????????????L.append(a)
      ????????????a,?b?=?b,?a?+?b
      ????????self.numbers?=?L
      
      ????def?__str__(self):
      ????????return?str(self.numbers)
      
      ????__repr__?=?__str__
      
      ????def?__len__(self):
      ????????return?len(self.numbers)
      
      f?=?Fib(10)
      print?f
      print?len(f)


    查看全部
    0 采集 收起 來源:python中 __len__

    2020-07-24

  • 裝飾器講解:https://www.bilibili.com/video/BV11s411V7Dt?from=search&seid=4406434222455786909

    查看全部

舉報

0/150
提交
取消
課程須知
本課程是Python入門的后續課程 1、掌握Python編程的基礎知識 2、掌握Python函數的編寫 3、對面向對象編程有所了解更佳
老師告訴你能學到什么?
1、什么是函數式編程 2、Python的函數式編程特點 3、Python的模塊 4、Python面向對象編程 5、Python強大的定制類

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!