练习 1-3 笨办法学Python3

练习 1. 第一个程序

警告!
如果你跳过了练习 0,那你就没有按照这本书的正确学习方式来。另外,也不要使用 IDLE 或者 IDE。如果你跳过了练习 0,拐回去重新学习。

你可能已经花费了大量时间在练习 0 上,学习如何安装一个文本编辑器,运行编辑器以及 Terminal,并且学习如何操作它们。如果你还没有做这些,就不要继续,否则你会后悔的。这种练习前的警告我再说最后一次:不要擅自跳过练习自己往前学

把下面的本文输入到一个名为 ex1.py 单个文件中,python 文件一般以 .py为后缀。

ex1.py

1   print("Hello World!")
2   print("Hello Again")
3   print("I like typing this.")
4   print("This is fun.")
5   print('Yay! Printing.')
6   print("I'd much rather you 'not'.")
7   print('I "said" do not touch this.')

你的 Atom 文本编辑器应该看起来像这样:

ex1-1.jpg

如果你的编辑器看起来不完全一样也不用担心,只要大体一致就行。

当你敲这个文件时,你得明白:

  1. 左边这些数字不是我敲上去的,它印在书上是为了讲解的时候方便说明。比如“看第 5 行...”之类,所以不要把行数敲进 Python 脚本里。
  2. 我输出的结果跟我在练习 1 的 ex1.py 中让你们输入的内容是一模一样的,而不是大致相同。所以每一个字符你都要严格按照我的要求来输入,当然颜色无所谓。

在终端这样输入就可以运行你的 Python 文件:

python3.6 ex1.py

如果你都做对了,你就会看到和我一样的结果,如果没有,你肯定是哪里出错了。不,相信我,不是电脑的问题。

你应该看到

在 MacOS 的 Terminal 上你应该看到这样的结果:

ex1-2.jpg

在 Windows 的 Powershell 上你应该看到这样的结果:

ex1-3.jpg

你可能会在 python3.6 命令行前面看到不同的名字,这不重要,重要的是你输入的命令要输出跟我一样的结果。

如果你出错了你可能会看到这个:

$ python3.6 python/ex1.py
File "python/ex1.py" , line 3 
print (" I like typing this.
                                   ^
SyntaxError : EOL while scanning string literal

能读懂这些错误信息很重要,因为你接下来可能会出现很多这种错误,我也是。让我们一行一行来看。

  1. 我们在 Terminal 运行 ex1.py 脚本。
  2. Python 告诉我们 ex1.py 文件的第三行出错了。
  3. 它把第三行的代码打印出来以便我们查看。
  4. 然后它放了一个 ^ (插入符号)来指出哪里出了问题。注意到那个缺失的 " 了吗?
  5. 最后,它输出“SyntaxError”,并告诉我们可能的错误信息。通常这些错误信息都比较隐晦,但是如果你用搜索引擎搜索以下,你就会发现别人也遇到过这样的错误,然后你很可能就会找到问题的解决办法。

课后练习

这个课后练习包括一些你应该尝试去做的东西,如果你不会,可以先跳过,随后再拐回来做。

对于这个练习,试试以下操作:

  1. 让你的脚本再打印出一行。
  2. 让你的脚本只打印一行。
  3. 在任一行的开头放一个 # ,看看会发生什么?试着弄明白这个符号的作用。

从现在开始,我不会解释每个练习都是如何工作的,除非遇到特殊情况。

常见问题

以下是实际学习本节练习过程中学生们经常会问到的一些问题:

我能用 IDLE 吗?不,你应该用 Terminal 或者 Powershell。如果你不知道怎么用,就去学习附录 A 的命令行速成教程。

我怎么才能像你一样编辑代码时有颜色?先把你的文件另存为 .py ,比如 ex1.py 。然后你在输入的时候就会有颜色了。

我在运行 ex1.py 时遇到了 SyntaxError:invalid syntax 提示。你很可能是已经运行了 Python,然后又输了一次 python。关闭 Terminal,重新打开,然后只输入 python3.6 ex1.py

我遇到了 can't open 'ex1.py': [Errno 2] No such file or directory. (“无法打开‘ex1.py’:[错误号 2] 没有该文件或目录”)。你需要和你创建的文件在同一个目录(文件夹)下。你要先使用 cd 命令切换到了那个目录下。比如,如果你把你的文件保存在 lpthw/ex1.py,那你就应该在运行 python3.6 ex1.py 之前先用 cd lpthw/ 切换到 lpthw/ 目录下。如果这段你看不懂,去学附录 A 的命令行速成教程。

我的文件不运行,我只是返回了提示符,没有任何输出。 你很可能以为我让你输入 print("Hello World!")只是让你输 "Hello World!"。并不是,你要完整地、一字不差地把代码敲出来。

练习 2 注释和井号

注释在程序中非常重要,它们可以用自然语言告诉你某段代码的功能时什么,还能在你想要暂时移除某段代码时禁用程序的一部分。以下是如何在 Python 中使用注释:

ex2.py

1   # A comment, this is so you can read your program later.
2   # Anything after the # is ignored by python. 3
4   print("I could have code like this.") # and the comment after 5
6   # You can also use a comment to "disable" or comment out code
7   # print("This won't run.") 8
9   print("This will run.")

从现在开始,我都会这样写代码。你得明白不是所有的东西都得在字面上保持一致,你的屏幕和程序可能看起来跟我的不一样,但是只要你在编辑器里输入的文本一样就行。事实上,我用任何文本编辑器都可以输出同样的结果。

你应该看到

练习 2 会话

$ python3.6 ex2.py
I could have code like this. This will run.

再说一次,我之后可能不会将所有的截图都贴出来,你得明白第一个 $ 和最后一个 $ 之间的内容才是你应该关注的。

课后练习

  1. 弄清楚 # 符号的作用,而且记住它的名字。(中文为井号,英文为 octothorpe 或者 pound character)。
  2. 打开你的 ex2.py 文件,从后往前逐行检查每个单词,与要求输入的内容进行对比。
  3. 有没有发现什么错误?有的话就改正过来.
  4. 读你写的习题,把每个字符都读出来。有没有发现更多错误?有的话改正过来。

常见问题

为什么在 print("Hi # there.")# 就没有被忽略? 因为 # 在一个字符串里,计算机会打印引号之间字符串的所有内容, # 在字符串里被认为是一个字符,而不是注释符号。

我如何把很多行变成注释? 在每一行前面加一个 #

为什么我要倒着检查代码? 这是一个让你的大脑不专注于每行代码意思的小技巧,这样做能够让你更准确地检查出错误,可以说是一个很好用的纠错技巧了。

练习 3 数字和数学

每一种编程语言都得和数字、数学打交道。不用担心:程序员总是自诩为数学天才,其实事实并非如此。如果他们是数学天才,他们就会去研究数学,而不是去写那些 bug 连篇的网站框架以便能开上豪车。

这个练习包含了很多数学符号。让我们看看它们的名字,在你输入的时候,试着说出名字,直到你烂熟于心为止。以下是这些符号的名字:

+ plus,加号
- minus,减号
/ slash,斜杠
* asterisk,星号
% percent,百分号
< less-than,小于号
> greater-than,大于号
<= less-than-equal,小于等于号
>= greater-than-equal,大于等于号

有没有注意到以上只是些符号,没有运算操作呢?写完下面的练习代码后,再回到上面的列表,弄明白每个符号的作用。例如 + 是用来做加法运算的。

ex3.py

1   print("I will now count my chickens:")
2
3   print("Hens", 25 + 30 / 6)
4   print("Roosters", 100 - 25 * 3 % 4)
5
6   print("Now I will count the eggs:") 
7
8   print(3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6)
9
10  print("Is it true that 3 + 2 < 5 - 7?") 
11
12  print(3 + 2 < 5 - 7)
13
14  print("What is 3 + 2?", 3 + 2)
15  print("What is 5 - 7?", 5 - 7)
16
17  print("Oh, that's why it's False.") 
18
19  print("How about some more.") 
20
21  print("Is it greater?", 5 > -2)
22  print("Is it greater or equal?", 5 >= -2)
23  print("Is it less or equal?", 5 <= -2)

确保你在运行它之前准确输入了每一行代码,和我的要求做一下对比检查。

你应该看到

练习 3 会话

$ python3.6 ex3.py
I will now count my chickens: Hens 30.0
Roosters 97
Now I will count the eggs: 6.75
Is it true that 3 + 2 < 5 - 7? False
What is 3 + 2? 5
What is 5 - 7? -2
Oh, that's why it's False. How about some more.
Is it greater? True
Is it greater or equal? True

Is it less or equal? False

课后练习

  1. 在每一行上面,用 # 写一句注释,向自己解释这行代码的作用。
  2. 还记得你在练习 0 中是如何启动 Python 3.6 的吗?再次启动它,把 Python 当成一个计算器来做一些数学运算。
  3. 找一些你需要计算的东西,然后写一个新的 .py 文件。
  4. 用浮点数重新写一下 ex3.py,让它更精确一些,比如 20.0 就是一个浮点数。

常见问题

为什么 % 是一个模数,而不是百分比? 这很可能只是设计者们选用的一个符号。在正常情况下你可以把它读作百分号,但是,在编程中 % 只是一个符号。

% 是如何工作的? 可以这样讲,x 除以 y 余 J。比如 100 除以 16 余 4,% 求的就是余数 J。

运算顺序是怎样的? 在美国我们遵循 PEMDAS 规则,即“括号,指数,乘,除,加,减(Parentheses Exponents Multiplication Division Addition Subtraction)。Python 也遵循这样的规则。很多人对 PEMDAS 规则存在误解,认为它们是严格按照先后次序来的,其实并不是,乘除是同时的,加减也是同时的,所以这个规则可能写成 PE(M&D)(A&S) 更合适。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342