练习 10-12 笨办法学Python3

练习 10 那是什么?

在练习 9 中我教了你一些新东西。这两天我们一直在学习字符串。我教了你两种创建多行字符串的方式,第一种是在月份中间加 \n ,它可以实现换行。

\ 这个字符可以把没法输入的字符转化成字符串。有很多你可能会用到的“转义字符”(escape scequence),我们会在接下来的练习中学到一些,以便你理解我说的意思。

一个很重要的转义字符就是转义单引号或者双引号。比如你要在一个用双引号引起来的字符串中再加一对双引号,就像这样:"I "understand" joe.",python 就会懵掉,因为它会认为 understand 后面的双引号就代表这个字符串已经结束了。所以你需要用一种方式告诉 python 字符串里面的双引号并不是一个真正的双引号。

要解决这个问题,你得转义双引号和单引号,让 python 知道得把它们包含在字符串里。例如:

"I am 6'2\" tall." # escape double—quote inside string 
'I am 6\'2" tall.'  # escape single—quote inside string

第二种方法是用三个双引号,即 """ ,这样就能像字符串一样运行,而且你可以多输入几行,最后再以 """ 结尾即可。我们来做个练习。

ex10.py

1   tabby_cat = "\tI'm tabbed in."
2   persian_cat = "I'm split\non a line."
3   backslash_cat = "I'm \\ a \\ cat." 
4
5   fat_cat = """
6   I'll do a list:
7   \t* Cat food
8   \t* Fishies
9   \t* Catnip\n\t* Grass 
10  """
11
12  print(tabby_cat)
13  print(persian_cat)
14  print(backslash_cat)
15  print(fat_cat)

你会看到

找一找你输入的 tab 符号(即 \t ),在这个练习中空格很重要,别弄错了。

$ python ex10 . py
        I'm tabbed in.
I'm split 
on a line.
I'm \ a \ cat .

I'll do a list:
        *   Cat food
        *   Fishies
        *   Catnip
        *   Grass

转义字符

这是 python 支持的所有的转义字符了。你可能用不到这么多,但是记住它们的格式以及用法。在一些字符串里试着用用它们,看看能不能成功运行。

附加练习

  1. 记住所有的转义字符。可以把它们添加到卡片上来记。
  2. 改用三个单引号('''),你知道什么情况下用它而不是三个双引号(""")吗?
  3. 把转义字符和格式字符串结合起来创建一个更复杂的字符串。

常见问题

我还是没完全理解前面的练习,我该继续往下学吗? 是的,继续学,别停在这儿。把你不明白的东西记在本子上,定期复习,等你做完更多的练习看你能不能理解。有时候你可能需要回过头去重新做做之前的练习才能明白。

双反斜杠 \\ 和其他符号有什么区别? 它只是为了让你能把单反斜杠 \ 打印出来,想想你为什么要用 \\

我要是用 // 或者 /n 就不行。 因为你用的是斜杠而不是反斜杠。它们是不同的符号,有着不同的作用。

我不明白附加练习的第 3 题。你说的把转义字符和格式字符串结合起来是什么意思? 我需要你理解一个概念,就是这些练习都可以结合起来解决问题。用你知道的关于格式字符串的东西和本练习学到的转义字符写一些新的代码。

'''""" 用哪个更好? 这完全基于风格。现在先用 ''' ,当你感觉用 """ 更好或者别人都用它的时候你可以用 """

练习 11 问问题

现在可以缓一缓了。前面我们做了大量的打印练习,以让你熟悉这些简单的东西,但是的确,它们很无聊。我们现在要做的是在你的程序里放入数据。这块有点复杂,因为你得学着做两件你可能一下子理解不了的事情。但是相信我,无论如何先试试看。做几个练习之后你就会明白。

大多数软件就是做如下事情:

  1. 从用户那里获得一些输入。
  2. 改一改。
  3. 打印出来一些东西以显示它变成了什么。

到现在为止你一直在打印东西,但是你还不知道怎么从用户那里获得 input(输入)。你甚至不知道“input”是什么意思。不管怎样,准确无误地输入这些代码,在下一个练习中我们会做更多的操作来解释 input

ex11.py

1   print("How old are you?", end=' ')
2   age = input()
3   print("How tall are you?", end=' ')
4   height = input()
5   print("How much do you weigh?", end=' ')
6   weight = input() 
7
8   print(f"So, you're {age} old, {height} tall and {weight} heavy.")
警告!
我们在每一个打印行末尾放一个 end=' ' ,是为了告诉 print 不要另起一行。

你会看到

练习 11 会话

$ python3.6 ex11.py 
How old are you? 38 
How tall are you? 6'2"
How much do you weigh? 180lbs
So, you're 38 old, 6'2" tall and 180lbs heavy.

附加练习

  1. 上网查查 python 的 input 是干嘛的。
  2. 你能找到它的其他使用方式吗?输入你找到的一些例子。
  3. 再写一个像这样的格式,来问一些问题。

常见问题

我如何从别人那里获得一些数字来做数学运算? 这就有点高级了,你可以试试输入 x = int(input()) ,这样可以从 input() 里面获取到字符串形式的数字,再用 int() 把它们转化成数值。

我把我的体重作为 input 像这样输入进去:input("6'2") ,但是不能正常运行。 你别把你的体重放在那儿,你得直接在 Terminal 里面输入。首先,回去输入我让你输的代码;然后,运行脚本,当它暂停的时候,用你的键盘输入你的体重。这才是正确的做法。

练习 12 提示用户

当你输入 () 的时候,一定要确保输入完整,它们是成对出现的。对于 input 来说,你还可以给用户放一个提示,让他知道该输入什么。你可以把提示的字符串放在 () 里面,就像这样:

y = input("Name?")

这个提示告诉用户输入“名字”,然后把结果放到变量 y 里面。通过这种方式你就可以问用户问题然后得到他输入的答案。

这意味着我们可以重新写我们之前的练习,就用 input 来做所有的提示。

ex12.py

1   age = input("How old are you? ")
2   height = input("How tall are you? ")
3   weight = input("How much do you weigh? ") 
4
5   print(f"So, you're {age} old, {height} tall and {weight} heavy.")

练习 12 会话

$ python3.6 ex12.py 
How old are you? 38 
How tall are you? 6'2"
How much do you weigh? 180lbs
So, you're 38 old, 6'2" tall and 180lbs heavy.

附加练习

  1. 在 Terminal 里输入 pydoc input ,看看它会说什么。如果你用的是 Windows, 输入 python3.6 -m pydoc input
  2. 输入 q ,退出 pydoc
  3. 到网上查查 pydoc 命令的作用。
  4. pydoc 读一读关于 openfileos,和 sys 的内容;浏览一遍即可,把有意思的东西记下来。

常见问题

为什么我每次运行 pydoc 都会收到错误信息:SyntaxError: invalid syntax 要么你没在命令行运行 pydoc,要么你先运行了 python3.6,先退出 python3.6 再运行 pydoc

为什么我的 pydoc 没有像你的一样暂停? 有时候如果帮助文件很短,一屏足以放下的话,pydoc 就只会把它打印出来。

当我运行 pydoc 的时候我会收到 more is not recognized as an internal 一些 Windows 版本没有这个命令,你可以跳过这个小题,需要它的时候在网上搜搜 Python documentation 即可。

为什么我不能用 print("How old are you?", input()) ?你能,只不过 input() 的结果不会被保存到一个变量里,它会以一种奇怪的方式运行。你可以试试,然后试着打印你输入的东西,看看你能不能搞明白为什么它无法运行。

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

推荐阅读更多精彩内容