日 期:2022.03.10
时 间:22:00-23:00
主持人:
主题一:编程卡点
请把问题点提前发到群里,方便伙伴们思考准备。 (含书的页码、疑惑点、习题等)
1-德菊
2-鹅总
3-欣燃
4-小熊老师
5-小武老师
6-爱梅
7-老张
8-范青群
9-请自行添加修改姓名
二、习题讨论:欣燃题目
# 查看注释,运行代码。import randomimport time# 用random函数在列表中随机抽奖,列表中只有3位候选者。luckylist = ['海绵宝宝','派大星','章鱼哥']# random模块中有个随机选取一个元素的方法:random.choice()。a = random.choice(luckylist) # 从3个人中随机选取1个人。print('开奖倒计时',3)time.sleep(1) # 调用time模块,控制打印内容出现的时间print('开奖倒计时',2)time.sleep(1)print('开奖倒计时',1)time.sleep(1)# 使用三引号打印hellokitty的头像image = '''/\_)o<| \\| O . O|\_____/'''print(image) # ……print('恭喜'+a+'中奖!') # 使用print函数打印幸运者名单
以上是已经写好的代码,可以运行的,现在需要各位:封装成一个新的函数。
温馨提示:
- 函数分两个部分,需要将第二部分封装起来,并调用函数。
- 3个候选者,即函数有3个参数。
解答一
# 查看注释,运行代码。import randomimport time# 下面这一段属于函数定义部分### 根据需求,明确函数的具体功能# 没有参数# 只能让别人看到打印结果,没办法跟用户(你自己也是用户)互动def PrintHelloKitty0():luckylist = ['海绵宝宝','派大星','章鱼哥']a = random.choice(luckylist) # 从3个人中随机选取1个人for i in range(3):time.sleep(1)print("开奖倒计时", i+1)# 使用三引号打印hellokitty的头像image = '''/\_)o<| \\| O . O|\_____/'''print(image) # ……print('恭喜'+a+'中奖!') # 使用print函数打印幸运者名单# 1个参数# 传入幸运者的名单,意味着我可以在外面增加或者较少幸运者的人数def PrintHelloKitty1(luckylist):a = random.choice(luckylist) # 从3个人中随机选取1个人for i in range(3):time.sleep(1)print("开奖倒计时", i+1)# 使用三引号打印hellokitty的头像image = '''/\_)o<| \\| O . O|\_____/'''print(image) # ……print('恭喜'+a+'中奖!') # 使用print函数打印幸运者名单# 2个参数# 传入幸运者的名单,意味着我可以在外面增加或者较少幸运者的人数# 传入image的样式,意味着我还可以不只是打印HelloKitty,我还可以打印冰墩墩的样式# 名单和image样式都可以由使用函数的人自己定义def PrintHelloKitty2(luckylist, image):name = random.choice(luckylist) # 从3个人中随机选取1个人for i in range(3):time.sleep(1)print("开奖倒计时", i+1)print(image) # ……print('恭喜'+ name + '中奖!') # 使用print函数打印幸运者名单# 3个参数# 传入幸运者的名单,意味着我可以在外面增加或者较少幸运者的人数# 传入image的样式,意味着我还可以不只是打印HelloKitty,我还可以打印冰墩墩的样式# 传入停留几秒,意味着我想让用户等几秒就等几秒# 三个参数放开之后,使用者的灵活的就很高def PrintHelloKitty3(luckylist, image, seconds):name = random.choice(luckylist) # 从3个人中随机选取1个人for i in range(seconds):time.sleep(1)print("开奖倒计时", i+1)print(image) # ……print('恭喜'+ name + '中奖!') # 使用print函数打印幸运者名单# 下面这一段属于函数调用(实现)部分# 将定义与实现分离,是为了提高的可读性# 混在在一起并不影响实现功能if __name__ == '__main__':PrintHelloKitty0()luckylist = ['海绵宝宝','派大星','章鱼哥']PrintHelloKitty1(luckylist)luckylist = ['海绵宝宝','派大星','章鱼哥']image = '''/\_)o<| \\| O . O|\_____/'''PrintHelloKitty2(luckylist, image)luckylist = ['海绵宝宝','派大星','章鱼哥']image = '''/\_)o<| \\| O . O|\_____/'''seconds = 4PrintHelloKitty3(luckylist, image, seconds)
运行结果(部分):
上面的代码,给出了四种封装方式,传入参数从少到多,大家可以体会一下,这之间的区别。
解答二
解答三

三、主题讨论
1. 从昨天的讨论来看,大家对函数的封装的理解有困惑,问题在于:到底要不要传参数,传几个参数,以及传哪些参数?
这个回答是:不一定。具体传几个参数其实是根据需求而定的。但是我们需要明白为什么要封装成函数,直接写成一堆不行吗?
封装成函数的目的是为了模块化,例如我要分别在100个文件里面都调用打印hellokitty这个函数,我们不可能这一百个文件都写上这些代码,封装成函数之后,我们只需要在一个.py文件定义这个函数就可以了,然后在其他文件里面直接调用。
- if(c=1)的理解
C++语言中,下面这段代码能跑过,也有输出:
python语言中,会提示语法错误,编译不通过:
其实这段代码想实现的逻辑是:
- 如果c等于1,打印success
- 如果不等于1,打印failed
# C++int c = 3;if(c=1) # 在C++语言中,c=1一定是返回true的,所以不管c初始化为任何值,都会打印success{print("success);}# pythonif c==1:print("success")
