学习python,少不了提问。无论是购买了教程,在交流群里提问,还是在论坛上向大佬请教,抑或是在工作中请教同事,好的提问,会让问答这个过程事半功倍地进行。
今天,我们就专门聊聊“如何提问”,掌握正确的提问方式,就能最快解决问题,也就能更快提高。
一、正确准备你的问题
好的问题,首先自己要看懂意思,描述要通顺;其次要完整而清楚,包含足够多的信息,说明白问题的起因。我们看一个不方便解答的提问实例:
首先需要指出的是, 所有不附上具体内容、看不到代码,看不到报错结果的提问,都是耍流氓 。正如医生诊断病情需要先让病人验血验尿得出一系列检查报告,才能推测病情,老师也需要看到代码、报错,甚至提问者的操作过程、意图,才能推测出错误。
回到截图上的常见问题:按照教程上却出错。遇到这种问题,首先应该检查 符号、拼写、缩进等初学者常犯的错误 。如果发现没有错误,却还是报错,接下来应该排除的是 工具包版本和课程不一样 导致的报错,尝试更新工具包。当然还有一种可能:
那么什么样的报错截图和提问方法才是正确的呢?
完整的报错截图,要包括 你的代码、报错的位置和报错的具体文字 ,尤其是最后一行“SyntaxError”。有时候报错非常长,提问者会忘记截图最后一行报错,这是一定要避免的。
此外,我们还建议大家提问时,叙述清楚自己的操作目的,再附上代码和报错的截图:
因为我们写代码的目的是 顺利实现某个功能 而不仅仅是跑通,能顺利完成要求的代码才是我们需要的。 叙述清楚代码目的,能让老师对你写的代码进行更有效的指导。
二、善用搜索引擎节约一大半的提问时间
“提问——等回答”的过程毕竟有一定的时间成本,有些问题只要善用搜索引擎,就可以即时得到解决。但搜索引擎毕竟不是人工,直接给报错截图是得不到回答的,如何让它“听懂”你的问题呢?
加Python学习qq裙:10667510 送全套零基础学习资料教程,程序员学习交流大本营
1、直接搜索报错关键字
以一个新手很可能遇到的invalid syntax问题为例。
这是初学者很容易出现的“ 缺胳膊少腿型 ”语法错误,很多朋友看到英文就会自动屏蔽不去阅读。其实只要大家简单搜一下最后一句:invalid syntax,就能知道这样的报错主要原因是什么(有时候不同编程语言的报错提示是一样的,加上语言名字会更有针对性):
打开其中一个看上去有点东西的答案链接,有用的答案会举出犯这样错误的例子。看到别人报错的例子,大家也更可能会联想到一些自己可能不小心的地方,再度检查代码,找出bug。与此同时,大家也会学到 “invalid syntax”是指语法有误,可能在报错标记的前后,缺少或多出了某些字符。
这一类的错误一定要学会自己排查,并且在不断debug过程中养成遵 守语法的好习惯。
2、没有报错文字,用简洁的语言和关键字描述问题
同样,还是先举例子:
这个问题也是同学们经常遇到的:Jupyter不运行代码,左侧显示“*”号。虽然没有跳出来报错文字,但我们还是可以搜索“Jupyter 星号”寻找答案,这里以在CSDN搜索为例:
果然能找到许多文章在讲述我们遇到的问题,随便点进一篇,就能知道,这个情况说明可能是上面的执行框出现错误,如果久等不出结果可以尝试重启kernel从上向下检查每个框并找到错误代码修改。
当然 如果一直没有找到你想看的答案,那么可以尝试联想新的关键词进行搜索 ,比如搜索“jupyter 不运行”“jupyter 运行 没反应”等等。这种方法同样适用于百度搜索。
3、善用翻译软件协助阅读报错
一句英文都不想读,何况一段英文?!
这里同样也是一个常见问题,当同学们想要使用pip安装或者升级一些包的时候,如果pip版本不对就很可能不成功,窗口上会跳出这几行字。其实只要耐着性子读一遍报错,就会知道,这里的报错其实已经给我们提示了解决办法:您正在使用pip版本8.1.2,但版本19.1.1可用。您应该考虑通过'python -m pip install --upgrade pip'命令进行升级。
但是,就是不喜欢读英文怎么办?此时就应该掏出Google翻译(不用),把不想读的英文粘贴进去:
大段英文还会出现在搜报错的过程中,因为很多解释报错的网页都是英文的,这时候就可以掏出另一个神器,Chrome浏览器的翻译成中文功能:
这样就很好阅读了:
总结一下,初学者如何利用搜索引擎:可以直接搜索关键词,可以使用简洁的问题描述进行搜索,还可以使用翻译软件辅助阅读报错。学会利用互联网来帮助自己学习能大大提高效率。
三、技术网站的正确打开方式
学习Python的同学除了百度,还可以在这些技术网站上搜索自己遇到的问题:
CSDN: https://www.csdn.net/
国内专业的技术IT社区,集聚了大量的软件开发者和学习者,这里强烈推荐 博客、下载 两个板块。
你可以像前文一样 在博客部分直接搜索你的问题,并查看其他博主的解决办法 ; 而“下载”栏目则有很多非常有用的学习资料:
想找特定的资源可以直接搜关键字,不过需要注意的是, 程序语言是不断在更新迭代的,请大家尽量找最新的资料下载学习。
简书: https://www.jianshu.com/
主打“内容创作社区”,同样也有很多IT方向的创作者分享自己的学习笔记和心得。个人最推荐的是上面的“ 资源合集类 ”文章。
随意点开其中一篇,长这样:
从别人整理好的资料中挑选自己所需,比盲找效率高很多,但也要注意: 学习在精不在多,宁愿钻研1份好的资料也不要收集100份资料放在网盘吃灰。
StackOverflow: https://stackoverflow.com/
StackO verflow是一个宝库型问答论坛 ,能找到各种和开发相关语言的bug解决办法,内容丰富。由于是技术型论坛,在上面搜索问题和答案,也有一定的技巧,比如:
1、只搜索标题的方法是在关键词前加上title:
2、使用*来扩大搜素范围,比如搜索no module,但不确定module名字的问题:
3、每个问题在提出的时候,提问者会给问题打标签,那么搜索者就可以使用[tag]方法来搜索标签,比如搜索[python3]来锁定python版本:
*更多的高级搜索提示:
https://stackoverflow.com/help/searching
不论是提问内容,还是回答问题的内容,Stack Overflow都是一个值得学习的地方, 一方面它教你如何完整清晰地提出技术问题,一方面它教你如何快速准确的搜索答案。
如果实在解决不了,就尝试自己提问吧。将清楚而完整的问题描述,和你自己尝试过的诊断步骤一起提出。这也是StackOverflow的社区文化: 提问和回答都要有自己的思考价值。 礼貌谦虚好学的态度会让你更容易获得需要的回答。
当然,Stack Overflow的界面是英文的,善用上文提到的chrome的“翻译成中文”功能会让你事半功倍。
GitHub: https://github.com/
GitHub可能是全球最大的程序员 交友 网站。有许多优秀的开发者会在GitHub上传分享自己的项目代码和经验。
新手程序员养成记录代码的习惯非常有用。将自己练习过的代码整理并上传到GitHub仓库上,随着时间的积累可以看到自己的进步轨迹也是一件很开心的事情。而ISSUES功能不仅能当做笔记使用,还可以作为事项管理的工具——
当然,GitHub的宝藏还有很多,比如很多新的高质量开源库如node.js,bootstrap会首发在GitHub. 作为代码学习者可以经常来GitHub逛一逛,记录自己的成长足迹,学习他人的代码经验,跟随最新的技术步伐。