乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      山腰課程代碼解析(每天補充)

       老蟹udjq3zh18w 2020-03-15

      第10關(guān)

      1.明確項目目標

      Q1:標準大小的項目,需要1個人用80個工時完成(也就是1個人做10天)

      A1:說明1個標準大小項目的工作量是80

      2.分析過程,拆解項目

      3.逐步執(zhí)行,代碼實現(xiàn)

      版本1.0:能用就好

      # 工時計算
      def estimated_time(size,number):
      time = size * 80 / number
      print('項目大小為%.1f個標準項目,使用%d個人力完成,則需要工時數(shù)量為:%.1f個' %(size,number,time))
      #這里使用了字符串的格式化,%.1f為浮點數(shù)size占位,“.1”表示保留一位小數(shù),同理,“.2”表示保留2位小數(shù);%d為整數(shù)number占位;%.1f為浮點數(shù)time占位。
      # 人力計算
      def estimated_numbeer(size,time):
      number = size * 80 / time
      #這里之所以乘以80是因為1個標準大小的項目的工作量為80
      print('項目大小為%.1f個標準項目,如果需要在%.1f個工時完成,則需要人力數(shù)量為:%d人' %(size,time,number))
      #參考上面的注釋


      # 調(diào)用工時計算函數(shù)
      estimated_time(1.5,2)
      # 調(diào)用人力計算函數(shù)
      estimated_numbeer(0.8,)

      傳遞參數(shù)過程

      版本2.0:稍作改良

      #在代碼中使用ceil函數(shù),必須先調(diào)用math模塊。
      import math

      # 為函數(shù)設(shè)置了三個參數(shù),并都帶有默認參數(shù)。當在外部調(diào)用時更改了默認參數(shù)的值,那么默認參數(shù)的值相應(yīng)修改;當外部沒有修改默認參數(shù)的值,那么默認參數(shù)按照原來的值傳參。
      def estimated(size=1,number=None,time=None):
      # 人力計算:如果外部調(diào)用函數(shù)時沒有更改number 的值就執(zhí)行以下代碼。
      if (number == None) and (time != None):
      #注意區(qū)分雙等號“==”用于判斷,單等號“=”用于賦值。“==”表示等于,“!=”表示不等于。
      number = math.ceil(size * 80 / time)
      #“math.ceil”用于向上取整,這行代碼表示將“size * 80 / time”向上取整并賦值給number。這里之所以乘以80是因為1個標準大小的項目的工作量為80
      print('項目大小為%.1f個標準項目,如果需要在%.1f個工時完成,則需要人力數(shù)量為:%d人' %(size,time,number))
      # 工時計算:如果外部調(diào)用函數(shù)時沒有更改time的值就執(zhí)行以下代碼。
      elif (number != None) and (time == None):
      time = size * 80 / number
      print('項目大小為%.1f個標準項目,使用%d個人力完成,則需要工時數(shù)量為:%.1f個' %(size,number,time))

      # 調(diào)用estimated函數(shù),并且更改了默認參數(shù)sizenumber的值,time的值未修改,依舊是None。
      estimated(size=1.5,number=2)
      # 調(diào)用estimated函數(shù),并且更改了默認參數(shù)size和time的值,number的值未修改,依舊是None。
      estimated(size=0.5,time=20.0)

      傳參過程

      import math

      def estimated(types,size,other):
      # 人力計算
      if types == 1:
      number = math.ceil(size * 80 / other)
      print('項目大小為%.1f個標準項目,如果需要在%.1f個工時完成,則需要人力數(shù)量為:%d人' %(size,other,number))
      # 工時計算
      elif types == 2:
      time = size * 80 / other
      print('項目大小為%.1f個標準項目,使用%d個人力完成,則需要工時數(shù)量為:%.1f個' %(size,other,time))

      estimated(1, 1.5, 2)
      # 結(jié)果:項目大小為1.5個標準項目,如果需要在2.0個工時完成,則需要人力數(shù)量為:60人
      estimated(2, 1.5, 2)
      # 結(jié)果:項目大小為1.5個標準項目,使用2個人力完成,則需要工時數(shù)量為:60.0個

      傳參過程

      版本3.0:精細打磨

      import math

      # 采集信息的函數(shù),即采集項目大小size,工時time,人力number
      def myinput():
      choice = input('請選擇計算類型:(1-工時計算,2-人力計算)')
      if choice == '1':
      size = float(input('請輸入項目大?。海?代表標準大小,請輸入小數(shù))'))
      number = int(input('請輸入人力數(shù)量:(請輸入整數(shù))'))
      time = None #由于計算的是工時,所以time賦值空值
      return size,number,time
      # 這里返回的數(shù)據(jù)是元組(size,number,time)
      if choice == '2':
      size = float(input('請輸入項目大?。海?代表標準大小,請輸入小數(shù))'))
      number = None
      #由于計算的是人力,所以number賦值空值
      time = float(input('請輸入工時數(shù)量:(請輸入小數(shù))'))
      return size,number,time
      # 這里返回的是一個元組(size,number,time)

      # 完成計算的函數(shù)
      def estimated(my_input):
      # 把元組(size,number,time)中的數(shù)據(jù)取出來
      size = my_input[0]
      number = my_input[1]
      time = my_input[2]
      # 人力計算
      if (number == None) and (time != None):
      #當人力number為空值,工時time非空值時執(zhí)行以下代碼
      number = math.ceil(size * 80 / time)
      print('項目大小為%.1f個標準項目,如果需要在%.1f個工時完成,則需要人力數(shù)量為:%d人' %(size,time,number))
      # 工時計算
      elif (number != None) and (time == None):
      #當人力 number非空值,時間time為空值時,執(zhí)行以下代碼
      time = size * 80 / number
      print('項目大小為%.1f個標準項目,使用%d個人力完成,則需要工時數(shù)量為:%.1f個' %(size,number,time))

      # 主函數(shù)
      def main():
      #調(diào)用函數(shù)myinput,并將返回值元組(size,number,time)賦值給my_input
      my_input = myinput()
      #將元組(size,number,time)作為參數(shù)傳遞給函數(shù)estimated
      estimated(my_input)

      # 調(diào)用主函數(shù)
      main()
      import math

      # 變量key代表循環(huán)運行程序的開關(guān)
      key = 1

      # 采集信息的函數(shù),即采集項目大小size,工時time,人力n
      def myinput():
      choice = input('請選擇計算類型:(1-工時計算,2-人力計算)')
      if choice == '1':
      size = float(input('請輸入項目大?。海?代表標準大小,請輸入小數(shù))'))
      number = int(input('請輸入人力數(shù)量:(請輸入整數(shù))'))
      time = None
      return size,number,time
      # 這里返回的數(shù)據(jù)是一個元組(size,number,time)
      if choice == '2':
      size = float(input('請輸入項目大?。海?代表標準大小,請輸入小數(shù))'))
      number = None
      time = float(input('請輸入工時數(shù)量:(請輸入小數(shù))'))
      return size,number,time
      # 這里返回的是一個元組(size,number,time)

      # 完成計算的函數(shù)
      def estimated(my_input):
      # 把元組(size,number,time)中的數(shù)據(jù)取出來
      size = my_input[0]
      number = my_input[1]
      time = my_input[2]
      # 人力計算
      if (number == None) and (time != None):
      number = math.ceil(size * 80 / time)
      print('項目大小為%.1f個標準項目,如果需要在%.1f個工時完成,則需要人力數(shù)量為:%d人' %(size,time,number))
      # 工時計算
      elif (number != None) and (time == None):
      time = size * 80 / number
      print('項目大小為%.1f個標準項目,使用%d個人力完成,則需要工時數(shù)量為:%.1f個' %(size,number,time))

      # 詢問是否繼續(xù)的函數(shù)
      def again():
      # 聲明key為全局變量,以便在函數(shù)內(nèi)部可以修改原來的全局變量key的值
      global key
      a = input('是否繼續(xù)計算?繼續(xù)請輸入y,輸入其他鍵將結(jié)束程序。')
      if a != 'y':
      # 如果用戶不輸入'y',則把key賦值為0
      key = 0

      # 主函數(shù)
      def main():
      print('歡迎使用工作量計算小程序!')
      #因為第四行便賦值1給變量key,然后又沒有修改過key的值,所以判斷為真,進入循環(huán)
      while key == 1:
      調(diào)用函數(shù)myinput并將返回值元組(size,numbertime)賦值給my_input
      my_input = myinput()
      estimated(my_input)
      #直接調(diào)用函數(shù)again
      again()
      print('感謝使用工作量計算小程序!')
      #調(diào)用函數(shù)main。需要注意的是:代碼是一行行從上往下執(zhí)行,但是以上只是封裝了各個函數(shù),沒有調(diào)用的情況下函數(shù)是不會運行的。
      main()

      第11關(guān)

      bug1:粗心

      #賦值0給變量n,避免判斷n<3時出現(xiàn)n未定義的報錯
      n=0
      #進入循環(huán)共循環(huán)三次,n=0時循環(huán)第一次,n=1時循環(huán)第二次,n=2時循環(huán)第三次,n=3時跳出循環(huán)
      while n<3:
          username = input('請輸入用戶名:')
          password = input('請輸入密碼:')
      #注意“==”用于判斷,“=”用于賦值
          if username == 'abc' and password == '123':
              print('登錄成功')
              break #當?shù)卿洺晒r,用break跳出循環(huán)
      #以下這個elseif同級,是對應(yīng)關(guān)系。如果用戶名和密碼有一個不匹配,那么執(zhí)行slse語句,并使得n的值增加1,以便n增加3次成為3時跳出循環(huán)。
          else:
              n=n+1
              print('輸入有誤')
      #以下這個else和while同級,是對應(yīng)關(guān)系,當while的條件不滿足時就執(zhí)行以下語句。
      else:
          print('你輸錯了三次,登錄失敗')

      bug2:知識不熟練

      #將空列表賦值給a
      a = []
      #利用“列表.append()”語法為列表增加元素
      a.append('A')
      a.append('B')
      a.append('C')
      print(a)

      bug3:思路不清

      movie = {
      '妖貓傳':['黃軒','染谷將太'],
      '無問西東':['章子怡','王力宏','祖峰'],
      '超時空同居':['雷佳音','佟麗婭'],
      }
      #定義一個字典movie,字典movie的鍵有妖貓傳、無問西東、超時空同居,值分別是列表['黃軒','染谷將太']、列表['章子怡','王力宏','祖峰']、列表['雷佳音','佟麗婭']
      name = input('你想查詢哪個演員?')
      for i in movie:
      #此處是從字典中遍歷出值的用法(movie是字典,i指代字典中的每一個值,i的變量名可以更改為其它字母,如n、m)。拓展知識:從字典中遍歷出鍵和值的用法為“ for i,l in movie.items()”;從字典中遍歷出值的用法為“for i in movie.values()”。
          actors = movie[i]
      # movie是字典,i指代遍歷出來的鍵,因此movie[i]表示取出字典中鍵為i 的值并賦值給actors。
          if name in actors:
      #如果我們想要查詢的演員名字name在actors中,則執(zhí)行以下代碼。
              print(name+'出演了電影'+i)
      #方法一:
      import random

      all = ['正面','反面']
      guess = '' #這一句也可以省去,但是要培養(yǎng)使用變量前定義變量的好習(xí)慣。
      while guess not in all:
      #當變量guess的值不在all列表中時,則執(zhí)行以下代碼
      print('------猜硬幣游戲------')
      print('猜一猜硬幣是正面還是反面?')
      guess = input('請輸入“正面”或“反面”:')

      toss = all[random.randint(0,1)]
      #random.randint()代碼可以隨機取出某區(qū)間的一個整數(shù),在這里表示隨機取出01[]。假設(shè)隨機取出0,則all[0]表示電腦從列表all中取出偏移量為0的“正面”;假設(shè)隨機取出1,則all[1]表示電腦從列表all中取出偏移量為1的“反面”。

      if toss == guess:
      #假設(shè)電腦的選擇和你的選擇相等,則猜對了。在此要注意雙等號“==”表示判斷,單等號“=”表示賦值。
      print('猜對了!你真棒')
      else:
      print('沒猜對,再給你一次機會。')
      guess = input('再輸一次“正面”或“反面”:')
      #如果猜錯了,則重新輸入一個值
      if toss == guess:
      #再次判斷猜對了沒
      print('你終于猜對了!')
      else:
      print('大失??!')
      3方法二:
      import random

      guess = ''

      while guess not in [0,1]:
      #這里是讓正面0代表正面,1代表反面。如果我們猜正面則要輸入0;猜反面則輸入1。
      print('------猜硬幣游戲------')
      print('猜一猜硬幣是正面還是反面?')
      guess = int(input('“正面”請輸入0,“反面”請輸入1:'))
      #由于前面的代碼已經(jīng)將“正面”和“反面”分別當成01,那么在外部輸入的就應(yīng)該是01,注意要將字符串類型轉(zhuǎn)換為數(shù)字類型。

      toss = random.randint(0,1)
      #利用random.randint()語法隨機取出01并賦值給toss。

      if toss == guess:
      print('猜對了!你真棒')
      else:
      print('沒猜對,再給你一次機會。')
      guess = int(input('再輸一次(“正面”請輸入0,“反面”請輸入1):'))
      if toss == guess:
      print('你終于猜對了!')
      else:
      print('大失?。?)

      bug4:被動掉坑

      #直接進入循環(huán)
      while True:
          try:
      #從外部獲取年齡
              age = int(input('你今年幾歲了?'))
      #獲取到年齡后直接跳出循環(huán)
              break
      #當獲取年齡發(fā)生錯誤時執(zhí)行以下代碼
          except ValueError:
              print('你輸入的不是數(shù)字!')
      #如果獲取到的年齡小于18歲,那么就打印出“不可以喝噢”
      if age < 18:
          print('不可以喝酒噢')
      num = [1,2,0,3]
      #從num列表中遍歷出每一個數(shù)字。需要注意的是:“for x in num”中的x也可以替換為i,其實這只是一個普通變量名罷了
      for x in num:
          try:
          #嘗試執(zhí)行下列代碼
              print (6/x)
              #使用6除以num中的元素,并打印
          except ZeroDivisionError:
          #如果發(fā)生ZeroDivisionError報錯,執(zhí)行下列代碼:
              print('0是不能做除數(shù)的!')
              #打印“0是不能做除數(shù)的!”

      第12關(guān)

      1.類與對象

      2.類的創(chuàng)建和調(diào)用

      class Computer:
      #電腦類,都有屏幕,所以屬性screen的值為布爾值True
          screen = True
          def start(self):
              print('電腦正在開機中……')
      my_computer = Computer() #computer類的實例化
      print(my_computer.screen)
      my_computer.start()

      3.創(chuàng)建類的兩個關(guān)鍵點

      class Chinese:

      name = '吳楓' # 類屬性name

      def say(self):
      print(self.name + '是中國人')

      person = Chinese() # 創(chuàng)建Chinese的實例person
      person.say() # 調(diào)用實例方法
      class Chinese:
      #外部調(diào)用born函數(shù),需要傳入?yún)?shù)name,birthplace
      def born(self, name, birthplace):
      print(name + '出生在' + birthplace)
      #外部調(diào)用live函數(shù),需要傳入?yún)?shù)nemr,region
      def live(self, name, region):
      print(name + '居住在' + region)

      person = Chinese()
      person.born('吳楓','廣東')
      person.live('吳楓','深

      class Chinese:
      #初始化方法在類實例化后會自動執(zhí)行,省卻了外部調(diào)用函數(shù)時重復(fù)傳參的煩擾,具體可以對比上一個代碼
      def __init__(self, name, birth, region):
      self.name = name # self.name = '吳楓'
      self.birth = birth # self.birth = '廣東'
      self.region = region # self.region = '深圳'

      def born(self):
      print(self.name + '出生在' + self.birth)

      def live(self):
      print(self.name + '居住在' + self.region)

      person = Chinese('吳楓','廣東','深圳') # 傳入初始化方法的參數(shù)
      person.born()
      person.live()

      4.面向?qū)ο缶幊?/span>

      #創(chuàng)建類的一個好處是:類中的屬性可以直接調(diào)用,不用考慮全局變量和局部變量的問題
      class Project:
      def __init__(self):
      self.key = 1

      def input(self):
      choice = input('請選擇計算類型:(1-工時計算,2-人力計算)')
      if choice == '1':
      self.size = float(input('請輸入項目大?。海?代表標準大小,請輸入小數(shù))'))
      self.number = int(input('請輸入人力數(shù)量:(請輸入整數(shù))'))
      self.time = None
      if choice == '2':
      self.size = float(input('請輸入項目大?。海?代表標準大小,請輸入小數(shù))'))
      self.number = None
      self.time = float(input('請輸入工時數(shù)量:(請輸入小數(shù))'))

      def estimated(self):
      # 人力計算
      if (self.number == None) and (self.time != None):
      self.number = math.ceil(self.size * 80 / self.time)
      print('項目大小為%.1f個標準項目,如果需要在%.1f個工時完成,則需要人力數(shù)量為:%d人' %(self.size,self.time,self.number))
      # 工時計算
      elif (self.number != None) and (self.time == None):
      self.time = self.size * 80 / self.number
      print('項目大小為%.1f個標準項目,使用%d個人力完成,則需要工時數(shù)量為:%.1f個' %(self.size,self.number,self.time))
      def again(self):
      a = input('是否繼續(xù)計算?繼續(xù)請輸入y,輸入其他鍵將結(jié)束程序。')
      if a != 'y':
      # 如果用戶不輸入'y',則把key賦值為0
      self.key = 0

      # 主函數(shù)
      def main(self):
      print('歡迎使用工作量計算小程序!')
      while self.key == 1:
      self.input()
      self.estimated()
      self.again()
      print('感謝使用工作量計算小程序!')

      project1 = Project()
      #創(chuàng)建實例
      project1.main()

      第13關(guān)

      class Chinese: # 類的創(chuàng)建
      eye = 'black' # 類屬性的創(chuàng)建

      def __init__(self,hometown): # 類的初始化方法
      self.hometown = hometown # 實例屬性的創(chuàng)建
      print('程序持續(xù)更新中……') # 初始化中的語句
      def born(self): # 實例方法的創(chuàng)建
      print('我生在%s。'%(self.hometown)) # 方法的具體語句

      wufeng = Chinese('廣東') # 類的實例化
      print(wufeng.eye) # 打印實例的屬性(從類傳遞的)
      wufeng.born() # 實例方法的調(diào)用

      1.類的繼承和定制是什么?

      2類的繼承,要怎么寫?

      繼承的基礎(chǔ)語法

      class Chinese:
      #因為眼睛是黑色的,所以將字符串'black'賦值給eye
      eye = 'black'


      def eat(self):
      print('吃飯,選擇用筷子。')
      # 通過繼承,Chinese類有的,Cantonese類也有
      class Cantonese(Chinese):
      #pass表示跳過,不執(zhí)行其它操作。子類繼承父類過程中,當子類不改變或增加任何屬性或方法,應(yīng)在類的內(nèi)部寫上pass,避免報錯
      pass
      # 驗證子類可以繼承父類的屬性和方法,進而傳遞給子類創(chuàng)建的實例
      yewen = Cantonese()
      # 子類創(chuàng)建的實例,從子類那間接得到了父類的所有屬性和方法
      print(yewen.eye) # 子類創(chuàng)建的實例,可調(diào)用父類的屬性
      yewen.eat() # 子類創(chuàng)建的實例,可調(diào)用父類的。注意調(diào)用函數(shù)時需要加上括號
      class Cat:
      #因為貓都有尾巴,所以將布爾值True賦值給屬性tail
          tail = True
          def say(self):
              print('喵喵喵喵喵~')
      class Ragdoll(Cat):  
      #pass表示跳過,不執(zhí)行任何操作。子類繼承父類過程中,當子類不改變或增加任何屬性或方法,應(yīng)在類的內(nèi)部寫上pass,避免報錯
          pass
      maomao = Ragdoll()
      print(maomao.tail)
      maomao.say()

      類的繼承之多層繼承

      類的繼承之多重繼承

      class C0:
      name = 'C0'

      class C2(C0):
      num = 2

      class C1:
      num = 1

      class C3:
      name = 'C3'

      class C4(C1,C2,C3):
      pass

      ins = C4()
      print(ins.name) # 打印出C0。C1沒有name屬性,然后在C2中尋找,C2中也沒有name屬性,但是C2的父類C0中有name屬性,根據(jù)“多重繼承中,若某父類還有父類的話,會先繼續(xù)往上找到頂?!?,因此打印出C0的name屬性。
      print(ins.num) # 打印出1

      3.類的定制,要怎么寫?

      定制,可以新增代碼

      定制,也可重寫代碼

      class Chinese:

      def land_area(self,area):
      print('我們居住的地方,陸地面積是%d萬平方公里左右。'% area)

      class Cantonese(Chinese):
      # 間接對方法進行重寫,增加了默認參數(shù)rete=0.0188
      def land_area(self, area, rate = 0.0188):
      #調(diào)用父類Chinese的方法land_area。這里需要注意的是:下面的這個area和父類的area不是同一個變量,只是說變量名相同罷了。父類的area實際上是下面的 area * rate。以下代碼是簡寫形式,如果補充完整是“ print('我們居住的地方,陸地面積是%d萬平方公里左右。'% area*rate)”。如果此處難以理解,可以將調(diào)用時傳入的具體數(shù)值代入理解。
      Chinese.land_area(self, area * rate)

      gonger = Chinese()
      yewen = Cantonese()
      gonger.land_area(960)
      yewen.land_area(960)

      class Chinese:

      def __init__(self, greeting = '你好', place = '中國'):
      self.greeting = greeting
      self.place = place

      def greet(self):
      print('%s!歡迎來到%s。' % (self.greeting, self.place))

      class Cantonese(Chinese):
      #以下代碼是類初始化方法的定制,更改了父類的默認參數(shù)greeting和place。
      def __init__(self, greeting = '雷猴', place = '廣東'):
      #這行代碼用于調(diào)用父類的初始化函數(shù),并將參數(shù)'雷猴'和'廣東'傳遞給父類初始化函數(shù)。
      Chinese.__init__(self, greeting, place)
      yewen = Cantonese()
      yewen.greet()

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多