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

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

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

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

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

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

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

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

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

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

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

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

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

4. 猜数字输入后报错

报错提示

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

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

5. print 时报错

报错提示

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

类似的一个问题是:

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

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

报错提示

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

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

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

其他内容回复关键字:

python:零基础入门课程目录

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

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

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

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181013B0X8OS00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券