这些年,你们一起踩过的坑(1)

简介: 今天就把平常被提问频率较高的一些问题整理出来,再次统一回答。基本都是非常早期阶段的问题,其中一定有你遇到过或将会遇到的。已经有一定基础的同学也可以对照下,这些问题涉及的概念,自己是否都已清楚。

编程教室创建5年多了,回答的问题不说上万也有好几千了。尽管大多数的问题在过去的文章以及论坛上都有讲过不止一遍,但因为不断有新人到来,难免还是被这些小坑磕磕绊绊一番。



今天就把平常被提问频率较高的一些问题整理出来,再次统一回答。基本都是非常早期阶段的问题,其中一定有你遇到过或将会遇到的。已经有一定基础的同学也可以对照下,这些问题涉及的概念,自己是否都已清楚。


因为篇幅问题,会分几篇来讲,如果你们有希望我讲解的,请在留言中提出。如果是普遍问题,我会放在后续中。


1. 我该下载哪个 Python 版本?


去官网 python.org 下载最新版本即可,无需严格按照教程里的小版本。如果连不上官网,也可以从文末“阅读原文”进入“学习资源”-“相关下载”,找到网盘里替你们下载好的安装包(不是实时最新版,但可以用)。


如果官网上的最新版本按钮没有替你自动下载,可从列表中选择 executable installer。如果你确信自己的系统是 64 位的,可以选 x86-64,否则选 x86 也没有问题。



我刚发现现在官网已经不再默认放置 2.7 版本的下载按钮了。所以关于 2 还是 3 的老问题也别纠结了,顺应潮流装 3 吧。我们的教程文章也逐步更新中(历史文章无法更新,请从“阅读原文”或回复 python 进入)。已经用了 2 的同学也不用担心,从语法上来说,真的没有什么差别,学会任何一个版本后都可以秒转。


2. 我在 Python 里为什么不能换行?


这个界面叫做 python shell,不是开发写代码的地方,每输入一行它都会自动执行并输出结果。所以要写代码,请参考课程《第3课 - IDE》里的说明,通过窗口上方菜单栏的 File - New File(或 New Window)创建一个新窗口,在里面写代码。

类似的问题还有,为什么教程里有输出,我代码里就没有?上面说了,python shell 会自动输出,而在代码中,你需要 print


3. 程序为什么到输入的地方就不动了?



可能有人会说,这也算问题?但确实有相当多的人在这一步会产生误解:以为 input 后面括号里的内容就是“用户输入”。


这里要明确:input 获取的是“用户输入,是程序运行时才得到的数据,所以不是开发者在代码里预先写好的。input 括号里的文字,只是用来作为输入前的“提示语”。真正的输入,是要程序执行后,在控制台里输入,按回车结束



如果对上述文字描述还没能理解的,可以公众号对话里回复关键字 输入,有一个视频演示。


4. 猜数字输入后报错


报错提示 TypeError: unorderable types: str() < int()



py3 的 input,不管你输入什么内容,都会被当做字符串来处理。而字符串是不能跟数字之间比大小的。所以需要手动转换一下:


answer = int(input())


py2 也会有类似的问题(发生在 raw_input),而且更坑的是用 str 和 int 比大小并不会报错,而是返回一个并不是你预想的结果,这个需要额外注意。


5. print 时报错


报错提示 SyntaxError: Missing parentheses in call to 'print'



这是 Python 版本 3 和 2 的“重大”差异之一:print 要把后面输出的内容加上括号。后面学到函数,你就理解为什么要这样了:print 也是一个函数,参数就是输出的内容。


类似的一个问题是:



会有人觉得我这里不是加了括号了吗,为什么还不行?这个式子在程序中的执行是:1. 输出 'num is %s',2. 把 print 的返回值做 % 11 操作。但 print 函数没有返回值,也就是 None,所以就报错了。应该用括号把要输出的所有内容外层括起来。


6. 用 randint 产生随机数时报错


报错提示 AttributeError: module 'random' has no attribute 'randint'



这个情况如果发生了,你可能很难找到问题所在,通过网上搜索也不行。原因是你的代码用了系统模块一样的名字:random。类似的,如果你给自己的代码取名 math.py、list.py、str.py 等,或者变量名用 sum、time、str、list 等,都有可能因命名冲突带来意想不到的 bug。所以,远离系统保留字。好的编辑器会给你高亮提示出来。如果你自己拿不准,取名时尽量用合成词,比如 my_random 之类。


可能有同学看出来了,这几个问题是到我们教程前半部分到“猜数字”小游戏这里可能踩到的坑。再往后有两个大坑,一个是函数,另一个是编码,我后面再来讲。


PS:本文封面图那个问题:‘python’不是内部或外部命令,也不是可运行的程序或批处理文件。在公众号(Crossin的编程教室)对话里回复关键字 安装,看下文中的几点“注意”,我要提醒的都在那里了。


其他内容回复关键字:

python :零基础入门课程目录

新手 :初学者指南及常见问题

资源 :超过500M学习资料网盘地址

项目 :十多个进阶项目代码实例

如需了解视频课程及答疑群等更多服务,请号内回复 码上行动

代码相关问题可以在论坛上发帖提问 bbs.crossincode.com

推荐阅读:

押韵工具 | 虎扑 | 如何debug | 苹果 | 查天气 | 我用Python | 知乎 | 排序 | 电影票 | 技术宅 | 单词表 | 新手建议

相关文章
|
程序员
程序员创业踩过的10个坑
我在之前的文章《程序员如何行稳致远》和《程序员是否适合创业》中跟朋友们提过,程序员要早点积累自己的生产资料,尽早尝试轻创业。但是创业有很多坑,我总结了这些年自己踩过的10个坑,希望对你有帮助。
|
Shell Python
这些年,你们一起踩过的坑(2)
上次我们踩坑总结文章 这些年,你们一起踩过的坑(1) 受到了不少同学的认可。我也确信文中所涉及的问题是非常具有普遍性的,对绝大多数初学者都会有帮助。
|
算法 安全 程序员
程序员成长之路有哪些绝对不能踩的坑?
程序员成长之路有哪些绝对不能踩的坑?
34 0
|
Java 程序员 Linux
笔试的时候我居然踩了坑
笔试的时候我居然踩了坑
92 0
|
人工智能
小白也可以做智慧大屏?我来帮你踩踩坑!
小白也可以做智慧大屏?我来帮你踩踩坑!
148 0
小白也可以做智慧大屏?我来帮你踩踩坑!
|
存储 移动开发 前端开发
别踩白块_前端H5游戏毕设(下)
别踩白块_前端H5游戏毕设
|
存储 移动开发 前端开发
别踩白块_前端H5游戏毕设
别踩白块_前端H5游戏毕设
|
SQL 数据库连接 Go
【锦囊妙计】我做PHP开发时踩的坑
这篇文章整理了我在开发过程中遇到的一些问题,比如“如何更好的比较字符串”,“什么场景下应该用什么函数读取文件”。
105 0
求职准备 | 准备简历和面试时最容易踩哪些坑
很多人面试完,心里都会想说:“哎呀,刚才那道题目,这样回答就好了!”,2020年4月,工作3年的我通过社招进入阿里云,通过这篇文章,把对于如何面试的思考分享给你。
10831 2
求职准备 | 准备简历和面试时最容易踩哪些坑