8.9 第三课 函数
作业:
作业1 字典的值可以是字典本身, 以提供更多信息,例如:europe = { 'spain': { 'capital':'madrid', 'population':46.77 },
'france': { 'capital':'paris', 'population':66.03 },
'germany': { 'capital':'berlin', 'population':80.62 },
'norway': { 'capital':'oslo', 'population':5.084 } }
1 打印法国首都
2 加入意大利(italy)的首都(roma)和人口(population 59.83)
作业2 找出两个整数48、78的最小公倍数
作业3 贷款月供计算器,具体要求参见图片(图3-1)
作业区及讨论区 Q&A:
目录:
1,代码运行问题
2,jupyter使用
3,代码理解:range
4,代码理解:max, min
5,代码运行出错
6,代码运行优化:统计大篇文档词频
7,代码运行出错
8,学习信心
9,代码运行问题
10,代码运行出错
11,代码理解:启动python解释
12,代码运行问题:嵌套,None
13,jupyter使用
14,jupyter使用
15,代码运行:优先级
16,代码运行出错:没有输出
17,代码运行出错:没有输出
18,代码运行出错
19,代码运行出错
20,资料包:快速找到需要的数据
Q 1 :请问为何“the”分1和6呢?第二段只得出6?(图3-2)
A:三引号是三个单引号''',你这个题里,函数把单引号当做第一个和最后一个单词的一部分了。所以输出结果是错的。
Q 2 :为什么我的jupyter notebook点击launch后右下角有蓝色滚动条在动,可是过一会后啥也没打开?
A:可以尝试用命令行启动试试,在anaconda prompt 中输入 jupyter notebook
Q 3 :上图(图3-3)是lesson2第34条记录,请问range也是一种数据类型吗?谢谢指教
A:对的,是一种特殊数据类型,非基本的数据类型,提供的操作方式和列表基本没有差别,大家记住这点可以了。
Q 4 :请问在上图(图3-4)中,第一组命令为何没有把最大、最小值分别显示出来?只有第二组是正确的方式吗?
A:用print函数可以换行输出多个结果,而其它只是输出最后一个。
Q 5 : 图3-5,换成“|”怎么结算就运算错了呢?
A:运算符优先级的问题,|的优先级要高于<,所以会出问题。加上括号就行了。
Q 6 :求教大篇文档如何统计词频?
课程里是就一个句子进行了词频统计,找出最大最小。笑来老师应该是就很大的文档进行词频统计,请问如何实现?是不是把文档导入jupyter?
A:需要先把文件内容读取到指定变量中,如text变量,下面的操作就和老师上课的操作步骤一样了,进行词频分析。
如想了解python文件操作,可查看:https://www.w3cschool.cn/python/python-files-io.html
Q 7 :求教,代码如图(图3-6),执行之后结果一直出不来,可是仔细看代码没有错呀!
A:出现这种情况的原因很多,如电脑长期锁屏、执行过死循环等等。不过重启一下(jupyter 的kernel 页面菜单上有个kernel ,上面有restart选项)就好了,restart是神技。
Q 8 :我刚才把第三课的回放又看了一遍,从头到尾,我的唯一感触就是看不懂。从哪开始看不懂的呢?就从while循环,开始看不懂的。本身就还没有理解while的含义,老师已经开始执行了一大串函数了,我也是一片懵逼。
我感觉学习Python与其他编程不一样,Python中可能对不仅仅包含了编程的理念,这中间也包含了对数学的一种理解。如果数学理解能力差的同学,比如我,可能就完全跟不上老师的进度。
只知道敲了一大串代码,然后结果就出来了,但是完全不晓得是咋回事。又谈何学习。
比如演示中,有一段过程是找最大公约数,我是反复看了三遍,愣是没看懂每行代码代表啥意思。我知道可能很多人看一遍就看的明明白白的,但是我确实是没看懂。
从最大公约数这一段往后,我完全是看的云里雾里,根本没有心思看下去,因为完全看不懂,只知道老师的代码不停的敲,其实啥也看不懂。
我不知道是我个人哪个环节出了问题了? 我看了一下,有很多人已经把作业的月供做了出来,我不知道有多少人是独立做出来的。反正我是无处下笔。不要说敲代码了,就是让我用x、y解应用题方式的方法,去求解,我都做不出来。我是不是,不适合老师的课程。
还是我没有找到自己的方法,可是方法又去哪找呢?
A:首先、专项去看,静下心来。我们要有拆解每个知识点的能力,各项击破。比如说循环不懂,而且涉及到最小公约数,那我们就先把最小公约数看明白,再看循环。我们要考虑大部分同学情况,所以约数课上不做讲解。一定要学会集中精神,谨慎顾此失彼。尤其对初学者,知识点比较多,看这个问题,想另一个问题,最后两个问题都无法解决,会产生心理恐慌。
第二、学习是需要循序渐进,对于基础薄弱的同学会产生知识跳跃的感觉。毕竟这门课程是从0基础到机器学习入门,在这个课时设定下是无法避免的。
第三、我们后面会尽量出些试题,已循环渐进的方式给大家提供些指引。
第四、关于基础好,那也是别人之前在这个方向投入过努力,而我们没有花过这个时间,就需要在这段时间投入更多。
第五,能否成功在自己。不妨告诉大家,助教学编程时从一个完全不懂web编程到学会只花了不到2月的时间,涉及很多知识点,遇到不懂就看书,书看不懂就抄书,抄书有助于静心,过两年就年薪20k了。后来学习数据分析、从来没接触数据分析的人花了不到一个月时间看完了《利用Python进行数据分析》这本书,每天从下班到晚上至少12点,每天自学至少4个小时。不过此时有了好的编程水平,学起来比较快。
最后,值钱的东西不付出努力就获得就不值钱了,毕竟天上不会掉馅饼。
Q 9 : 为什么有的时候,shift+enter之后没有运行程序,而是移到下一行去了么?比如上图(图3-7)的代码,第二行输入find_gsp(18,20)之后,shift+enter结果跳到下一行了,没有显示结果。哪位同学或者是老师如果知道麻烦告知,谢谢。
A:这种情况多数是要死循环导致的,出现死循环之后,记得要重启一下kernel. 执行菜单下的kernel=>restart。不重启修改或者删除都是没用的,依然会卡住。
Q 10 :出现了 ‘find_gcd’ is not defined,怎么办?
A:发现not defined这种错误,首先确认一下定义这个变量单元格代码是否执行过了。[ ] 表示单元格没有执行。修改过单元格的代码也要记得重新执行下。
Q 11 :请问下面这句话的理解:
> 如果把上面的自定义函数保存为caculate.py文件里了,就可以在该文件当前目录下启动python解释器,用from caculate import find_gcd来导入函数,注意caculate是文件名,而且不需要加.py扩展名。
这句话讲的“在当前目录下启动python解释器”是什么意思?怎样操作呢?
A:启动python解释器,其实就是启动一个环境,操作层面来讲就是在指定的目录下启动python命令。jupyter notebook下的文件只要和py文件在一个目录下,也可采用同样方式导入。
Q 12 :关于第二节的案例(词频)有两个问题。见上图(图3-8)。
A:a1: 括号套括号的形式是没问题的,但要记住,括号应该成对出现。
a2: None 和0的区别是,None 定义的是空集,并不是0,虽然在这道题的环境下用0也可以,但是如果有负数出现就不行了,会影响判断。
所以我理解是,None 是比较通用的方式,试用范围广,用它也比较省事,不会给后续带来麻烦。
Q 13 :请问怎样写出在GitHub里分享的教案,既有markdown格式,又有代码,而且代码前面的In [1]:也能显示出来,这是什么格式的?、
A:jupyter notebook就是这种格式的。
、
Q 14 :点击JupyterNotebook 下面的launch 没反应是怎么回事
A:配置一下工作目录 或者使用命令行打开
Q 15 :请问在Python上进行复杂运算,可以有比较简洁的输入方法吗?还有在Python上的运算符,有运行的先后顺序吗?计算贷款时,计算的代码显得很复杂,可读性很差
A:可以化简一下,运算是有优先级的 不确定优先级的情况下可以使用括号明确优先级
Q 16 : 如图(图3-9),运行没有结果
A:死循环了,用Kernel中的restart重启一下。
Q 17 :如图(图3-10),运行没有结果。
A:定义函数需要调用的
Q 18 : 作业3(图3-11)不知道哪错了。求教
A:因为少了float的右括号
Q 19 :计算部分的代码都是对的,但是输入 0 无法结束报告,这啥情况?
A:应该是 if money == int(0):
Q 20 :怎么快速找到自己想要的数据,求推荐!
A:一般网上有一些开放的数据集,国外的较多,比如
著名的UCI机器学习数据集 【 http://archive.ics.uci.edu/ml/ 】
Kaggle 竞赛数据 【 https://www.kaggle.com/datasets 】
或者政府提供的开放数据,比如
美国 DATA.GOV 【 https://www.data.gov 】
纽约 NYC OpenData 【 http://opendata.cityofnewyork.us 】
The Humanitarian Data Exchange 【 https://data.humdata.org 】
国内的比较少,比如聚数力 【 http://dataju.cn/Dataju/web/dataDescriptionAndDataset 】
还有收费的数据堂
如果要获取网页数据,可以自己编写爬虫工具来采集
有些网站提供数据的API接口,比如微博,但是数量和频率非常有限制
想要获取理想的数据本来就不是一件容易的事情,特别是在数据已被当成宝藏的今天