2.1 Python补充

2.1 Python补充

2.1.1

2.7 or 3? This is not a question.

同学们在安装Python的时候是否会纠结安装2.7还是3呢?这些都是细枝末节啦,2.7和3的确有不同,但并不是很大。Crossin用的是2.7,我会在3有不同的地方加上补充的,所以大家可以放心用3,毕竟新一些;当然懒得看我的补充用2.7也没问题,将来你们写程序用的库也是大多两个都支持的,不过装2的电脑上是不能跑3编译的程序的哈。

库又是什么鬼呢?顾名思义就是一个工具库,里面装着一些已经写好的函数什么的。比如你要算一个a+b+c,一位很厉害的前辈已经写过一段代码能算这个了,然后他把段代码取个名字叫“jialeyoujia”,装在一个叫“666”的库里。你在写自己的程序时就可以import(加载)这个库:

from 666 import jialeyoujia

然后调用这段代码,比如这样:

jialeyoujia(a,b,c)

一个库里可以装好多这样的工具。具体怎么调用库、有哪些库,大家过一阵就会学到了。

此外,安装的时候记得把“配置环境变量”这个选项打上勾,这样就不用手动配置了。

print

如果你用的是3,那么print必须加括号,Crossin也提到了。print('hello, world!')或者print("hello, world!")都是可以的。

print(1e30)为什么会输出1e+30呢?大家可以试一下1e0、1e2……1e15、1e16、1e-2。发现了什么?是不是每次都多个0?因为e几几就是10的几次方的意思,所以1e1就是10.0,1e-2就是0.01了。为什么到了16(和-5)就不加0了?——0太多了呗。

IDE

IDLE很简洁,功能也够用。但是没有代码自动补全啥的。PyCharm是个不错的选择。

你可能会听过Visual Studio的大名,微软的号称“世界第一”的IDE(动不动十几G你怕不怕),功能当然是很强了,不过大而全的东西你总是要花一些时间摸索调配的。Eclipse也是出名的IDE。不过用上面两个IDE写Python需要做一些调配。

将来你还会听到Vim、Atom、Sublime Text、Notepad++等等,这些叫文本编辑器,可以说是代码界的Word,不带编译器。也就是说,它们可以用来写代码,但是没有编译器帮你把代码翻译给机器,不能生成程序。往往需要另外下载编译器然后把编辑器和编译器连起来。那些IDE大多自带了一些语言的编译器(C等),所以叫IDE(集成开发环境)。

在Python这里呢我们没有编译器但是有解释器,功能一样,就是把代码翻译给电脑运行。你在安装Python的时候就已经顺便把解释器装好了。只要告诉IDE或者编辑器这个解释器装在哪就行。

当然IDE和python版本一样是细枝末节的东西,只是工具,我们现阶段不用太在意,先把语言学好,特别,没有代码补全的IDE可以逼迫你记的更牢。

2.1.2

输入问题——请写完“猜数字”弱智小游戏后来看

使用3的同学们是不是遇到问题了?按照Crossin输入的代码为什么运行会报错?见下图(看我天衣无缝的打码)

是不是觉得自己看了个假教程?不不不,人家在2.7上可是运行的好好的。到了3为什么就出问题了呢?

注意看上图左边红色字(大概意思):这个错误可以追溯到”弱智小游戏 范例.py这个文件里第10行 “”if answer < num“。”<” 不能用来比较’ str’ 和’ int’ 。

何解啊?就是说我们比较的answer是str(字符串)类型(见第五课),而num是int(整数)类型。请重看Crossin第4课,在2.7里input输入整数,会识别并把它作为int;直接输入hello, world而不带引号则不行,像print一样。而在3中input相当于2.7的raw_input,无论你输啥它都当你是str字符串,也就是输入1和”I love u”是同一种格式,而”I love u”当然不能和520比大小吧?

所以我们应该这样写:answer = int (input ()),就是把输入的str转成int。当然也可以在input ()括号里加些提示:answer = int (input (‘I guess it is: ‘))

附弱智小游戏代码:

总共用了多少次是用count记录的,每次循环count就加1。count = count + 1这行可以写成count += 1。用#号屏蔽掉的一行是用来检查的,大家可以想想它如何派上用场。

关于print的换行问题

在2.7里想让两个print出来的东西不换行,在print后加一个逗号就可以了。而在3中这么做却没用。

print('hello, '),
print('world!')

输出:

hello,
world!

必须这样写:

print('hello, ', end = '')
print('world!')

输出:

hello, world!

end = ‘xx’的意思是print出来的东西以xx结束,默认是end = ‘\n’,所以是换行。

print('hello, ', end = 'Www')
print('world!')

输出:

hello, Wwwworld!

而end = ”就是结尾啥都没有,当然也没有换行。

2.1.3

Py3对文件的处理

屁眼3(误)在文件这一块删掉了file的打开文件用法,只能用open。此外如果open('xxx.xxx')不加’w’的话是可以读不可以写(默认是’r’)。

我们在写文件的时候只能覆盖文件的旧内容,那么可不可以只是在文件中增加一行呢?例如我想向文件中增加一项提醒事项,但不想删除之前的提醒,怎么办呢?

Crossin41课用的方法:把文件中的所有事件加入字典,添加一项,再把所有事件写回去。

其实还有一种方法:追加写入,open('xxx.xxx','a'),然后用write写入(是不是很简单?)。这样追加的内容回直接加在旧内容的后面,不会新开一行,writelines也没用。不过加一个\n就搞定了嘛。

然而,这只能在文件后面添加内容,如Crossin的游戏中用户数据的修改还是(暂时,还可以用正则表达式)要用读入字典的方法。

关于编程的格式规范

大家学到这里有没有发现编程和写诗作曲一样是一种艺术创作?既然如此,那编程就也和写诗作曲一样要有格式,这样才能让人看懂。特别是当你将来与团队合作编程的时候,规范地写代码就粉重要了。

看不懂?码着。一个星期后再来看。还看不懂?再下个星期来看。而且要对照自己的代码修改。现在你可以先对照自己的程序看看有没有用错空格。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值