小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

 老蟹udjq3zh18w 2020-03-15

第10關(guān)

1.明確項目目標(biāo)

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

A1:說明1個標(biāo)準(zhǔn)大小項目的工作量是80

2.分析過程,拆解項目

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

版本1.0:能用就好

# 工時計算
def estimated_time(size,number):
time = size * 80 / number
print('項目大小為%.1f個標(biāo)準(zhǔn)項目,使用%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個標(biāo)準(zhǔn)大小的項目的工作量為80
print('項目大小為%.1f個標(biāo)準(zhǔn)項目,如果需要在%.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ù),并都帶有默認(rèn)參數(shù)。當(dāng)在外部調(diào)用時更改了默認(rèn)參數(shù)的值,那么默認(rèn)參數(shù)的值相應(yīng)修改;當(dāng)外部沒有修改默認(rèn)參數(shù)的值,那么默認(rèn)參數(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個標(biāo)準(zhǔn)大小的項目的工作量為80
print('項目大小為%.1f個標(biāo)準(zhǔn)項目,如果需要在%.1f個工時完成,則需要人力數(shù)量為:%d人' %(size,time,number))
# 工時計算:如果外部調(diào)用函數(shù)時沒有更改time的值就執(zhí)行以下代碼。
elif (number != None) and (time == None):
time = size * 80 / number
print('項目大小為%.1f個標(biāo)準(zhǔn)項目,使用%d個人力完成,則需要工時數(shù)量為:%.1f個' %(size,number,time))

# 調(diào)用estimated函數(shù),并且更改了默認(rèn)參數(shù)sizenumber的值,time的值未修改,依舊是None
estimated(size=1.5,number=2)
# 調(diào)用estimated函數(shù),并且更改了默認(rèn)參數(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個標(biāo)準(zhǔn)項目,如果需要在%.1f個工時完成,則需要人力數(shù)量為:%d人' %(size,other,number))
# 工時計算
elif types == 2:
time = size * 80 / other
print('項目大小為%.1f個標(biāo)準(zhǔn)項目,使用%d個人力完成,則需要工時數(shù)量為:%.1f個' %(size,other,time))

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

傳參過程

版本3.0:精細(xì)打磨

import math

# 采集信息的函數(shù),即采集項目大小size,工時time,人力number
def myinput():
choice = input('請選擇計算類型:(1-工時計算,2-人力計算)')
if choice == '1':
size = float(input('請輸入項目大?。海?代表標(biāo)準(zhǔn)大小,請輸入小數(shù))'))
number = int(input('請輸入人力數(shù)量:(請輸入整數(shù))'))
time = None #由于計算的是工時,所以time賦值空值
return size,number,time
# 這里返回的數(shù)據(jù)是元組(size,number,time)
if choice == '2':
size = float(input('請輸入項目大?。海?代表標(biāo)準(zhǔn)大小,請輸入小數(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):
#當(dāng)人力number為空值,工時time非空值時執(zhí)行以下代碼
number = math.ceil(size * 80 / time)
print('項目大小為%.1f個標(biāo)準(zhǔn)項目,如果需要在%.1f個工時完成,則需要人力數(shù)量為:%d人' %(size,time,number))
# 工時計算
elif (number != None) and (time == None):
#當(dāng)人力 number非空值,時間time為空值時,執(zhí)行以下代碼
time = size * 80 / number
print('項目大小為%.1f個標(biāo)準(zhǔn)項目,使用%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('請輸入項目大?。海?代表標(biāo)準(zhǔn)大小,請輸入小數(shù))'))
number = int(input('請輸入人力數(shù)量:(請輸入整數(shù))'))
time = None
return size,number,time
# 這里返回的數(shù)據(jù)是一個元組(size,number,time)
if choice == '2':
size = float(input('請輸入項目大?。海?代表標(biāo)準(zhǔn)大小,請輸入小數(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個標(biāo)準(zhǔn)項目,如果需要在%.1f個工時完成,則需要人力數(shù)量為:%d人' %(size,time,number))
# 工時計算
elif (number != None) and (time == None):
time = size * 80 / number
print('項目大小為%.1f個標(biāo)準(zhǔn)項目,使用%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的值,所以判斷為真,進(jìn)入循環(huán)
while key == 1:
調(diào)用函數(shù)myinput并將返回值元組(size,number,time)賦值給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
#進(jìn)入循環(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 #當(dāng)?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)系,當(dāng)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:
#當(dāng)變量guess的值不在all列表中時,則執(zhí)行以下代碼
print('------猜硬幣游戲------')
print('猜一猜硬幣是正面還是反面?')
guess = input('請輸入“正面”或“反面”:')

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

if toss == guess:
#假設(shè)電腦的選擇和你的選擇相等,則猜對了。在此要注意雙等號“==”表示判斷,單等號“=”表示賦值。
print('猜對了!你真棒')
else:
print('沒猜對,再給你一次機(jī)會。')
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)將“正面”和“反面”分別當(dāng)成01,那么在外部輸入的就應(yīng)該是01,注意要將字符串類型轉(zhuǎn)換為數(shù)字類型。

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

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

bug4:被動掉坑

#直接進(jìn)入循環(huán)
while True:
    try:
#從外部獲取年齡
        age = int(input('你今年幾歲了?'))
#獲取到年齡后直接跳出循環(huán)
        break
#當(dāng)獲取年齡發(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('電腦正在開機(jī)中……')
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('請輸入項目大?。海?代表標(biāo)準(zhǔn)大小,請輸入小數(shù))'))
self.number = int(input('請輸入人力數(shù)量:(請輸入整數(shù))'))
self.time = None
if choice == '2':
self.size = float(input('請輸入項目大小:(1代表標(biāo)準(zhǔn)大小,請輸入小數(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個標(biāo)準(zhǔn)項目,如果需要在%.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個標(biāo)準(zhǔn)項目,使用%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í)行其它操作。子類繼承父類過程中,當(dāng)子類不改變或增加任何屬性或方法,應(yīng)在類的內(nèi)部寫上pass,避免報錯
pass
# 驗證子類可以繼承父類的屬性和方法,進(jìn)而傳遞給子類創(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í)行任何操作。子類繼承父類過程中,當(dāng)子類不改變或增加任何屬性或方法,應(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):
# 間接對方法進(jìn)行重寫,增加了默認(rèn)參數(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):
#以下代碼是類初始化方法的定制,更改了父類的默認(rèn)參數(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)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多