前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >这些年,你们一起踩过的坑(1)

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

作者头像
Crossin先生
发布2018-10-22 10:11:36
4760
发布2018-10-22 10:11:36
举报

编程教室创建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,不管你输入什么内容,都会被当做字符串来处理。而字符串是不能跟数字之间比大小的。所以需要手动转换一下:

代码语言:javascript
复制
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 之类。

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Crossin的编程教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 我该下载哪个 Python 版本?
  • 2. 我在 Python 里为什么不能换行?
  • 3. 程序为什么到输入的地方就不动了?
  • 4. 猜数字输入后报错
  • 5. print 时报错
  • 6. 用 randint 产生随机数时报错
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档