一、解决编程卡点
1-德菊
①问
答:
这行输出是代码year_leal_bool的输出结果,表示这是个函数,且是_is_leap的化名。至于为什么输出<>,这就是python语言本书的输出内容,设计者设定的。然后这个问题有点太细节了,其实不知道为啥不影响我们理解输出的意思。
②问
191页,上面的
help(isprime)
print(is_primr._doc)
isprime._doc
没看懂?为什么输出的是下面的内容?
②答
2-鹅总
问:
P196页,代码中的前三行注释:
#%load mycode.py
#当前这个Code Cell中的代码,保存在当前的文件夹的mycode.py文件中
#以下代码是使用Jupyter命令%load mycode.py导入当前Code Cell的。
这段话是什么意思? Code Cell是什么?
答:
二、小熊老师题目讨论解答
问:
周一精进:
题目:银行账户为123456,密码为123,
要求:分别使用 for和while循环模拟登陆银行账户。
接受用户输入,如果账号和密码都正确,打印“登陆成功”,否则打印“账号或密码错误,请重新输入”,允许输入3次,并且如果第三次也登陆失败,直接打印“连续3次登陆失败,账户已被冻结”。
答:
三、欣燃题目讨论解答
问:
周四精进题来了——关于“函数”的应用
题目要求:
眼看要过年了,深夜食堂经营的不错,你打算给员工发奖金犒劳一下。请你定义函数,当输入员工姓名和工作时长两个参数,即可打印出该员工获得多少奖金。
发放奖金的要求如下:
- 工作时长不满六个月,发放固定奖金500元。
- 工作时长在六个月和一年之间(含一年),发放奖金120元*月数(如8个月为960元)
- 工作时长在一年以上,发放奖金180元*月数 (如20个月为3600元)
温馨提示:主要——定义两个函数:
第一个函数功能为根据工作月数返回奖金额,
第二个函数功能为打印出’该员工来了XX个月,获得奖金XXX元’。
答:
解答一

解答二
解答三
解答四
def CalcuBonus(month):"""计算奖金"""bonus = -1# 判定month是否为整型if isinstance(month, int):if month < 0:print("<Assertion> input paras is negative!")elif month == 0:bonus = 0elif 0 < month < 6:bonus = 500elif 6 <= month <= 12:bonus = month * 120else:bonus = month * 180else:print("<Assertion> input paras is not integer!")return bonusdef GetGain(name, month):"""获取计算奖金结果"""gain = CalcuBonus(month)if gain != -1:print("%s来了%s个月, 获得奖金%s元" % (name, month, gain))else:print(f"检查输入是否有误, name:{name}, month:{month}")if __name__ == '__main__':# 测试的时候,尽量各种情形都包含在里面# 通常这部分输入,我们可能会从excel表格中读入employee1 = {"name":"小张", "month": -5}employee2 = {"name":"小李", "month": 3.2}employee3 = {"name":"小黑", "month": 0}employee4 = {"name":"小白", "month": 5}employee5 = {"name":"小王", "month": 8}employee6 = {"name":"小赵", "month": 12}employee7 = {"name":"小刘", "month": 20}employee_ls = [employee1, employee2, employee3, employee4, employee5, employee6, employee7]# 遍历列表for emplo in employee_ls:GetGain(emplo["name"], emplo["month"])
四、补充知识点
关于Python格式化输出:%d,%s,%f
常见的格式化符号
格式符号 转换
- %s 通过str()字符串转换来格式化
- %u 无符号的十进制整数
- %d 有符号的十进制整数
- %o 八进制整数
- %x 十六进制整数,小写字母
- %X 十六进制整数,大写字母
- %e 浮点数字(科学计数法)
- %E 浮点数字(科学计数法,用E代替e)
- %f 浮点实数
- %g 浮点数字(根据值的大小采用%e或%f)
- %G 浮点数字(类似于%g)
### name:str month:int gain:intprint("%s来了%s个月, 获得奖金%s元" % (name, month, gain))# 虽然month和gain都是int,但是这里使用符号%s仍然可以转换成功# 是因为这里面存在一个转换:str(month) str(gain),将int转换为str
下面这张图示老张同学在我们讨论的时候找出来的解答:
五、自由讨论、总结复盘
葛小武
看书容易把太多注意力放在很细节(边边角角)的地方,会对我们造成一定的困惑;暂时忽略这些地方,并做好标记,继续往下读。其实很多类似的细节,如鹅总提出的这个问题并不影响我们理解书中的内容和书中的代码。我们先把基础的东西弄明白,再扣细节,我觉得这样好点。
面对一个题目,有思路,但是不知道怎么下手?这种感觉就相当于与不知道如何将中文翻译成英文,因为我们对英文的语法、单词的用法等等不太熟练。所以我觉得一个主要原因还是对python的语法还不太熟练,这时候克服一下无所适从,先把函数定义写上去,变量定义下去,可能写着写着就知道该怎么办了。
爱梅提的另外一个问题:不知道函数里面该传几个参数?参数个数其实是根据函数具体功能而定的,就像昨晚那个计算工资的函数(bonus_calcu),这个函数要实现的功能是根据工作的月数计算工资,那参数就应该是“月数(month)”。还可以这样理解,参数之所以需要传入进来,就是因为我们不知道这个参数该取什么值,所以需要传入让别人告知。实在不知道要传几个参数,那就干脆一个参数都不写,然后继续写代码,写完之后再反过来想想要传哪些参数,只要你的逻辑比较清晰,后面你就能知道要传什么参数。


