《Python为你打开一扇门》,你已经轻轻地推开了Python世界的大门,你开始凝视这个全新的世界,你用print() 函数敲下了第一行Python代码,你运行了第一个Python写成的人工智能小程序~
而今天,我们要真正开始在Python世界的探险了(叉会儿腰)!
说实话,这个新世界对你而言,就像美丽的丛林一样,充满陌生的事物和未知的惊喜。而且关键是,在这趟探险中,我们非常清楚,我们将收获什么,又将如何行动。
关于收获什么,在第0关,你已经知道,Python小课的教学大纲分为三大部分:
接下来,你会看到一个庞大的知识树,是这个大纲的详细展开,上面的每个词你应该都不认识,但不用害怕,这满满的知识正指向我们旅途中的所有收获,瞄一眼就好,不用细看。
在学完23关之后,知识树上的每一个知识点,你不但能看得懂,还能用起来。这是收获。
关于如何行动,在这趟旅程中,我们不追求一蹴而就,而会以合适的节奏稳步向前,最大程度照顾新手的感觉。
好啦,你现在可以再瞄一眼图中的左侧,课程一共有三大部分,基础知识阶段是0-13关,模块调用是14-20关,举一反三是21-23关。
我们接下来要进入的就是第一大部分:基础知识。从现在开始,你就只要关注这阶段就好了。
而今天,我们要来学习的是图中红框标出的部分:
那这些东西都能做出什么呢?请看下面这个和电脑对话的小程序。
解释一下发生了什么:当你运行这个Python程序的时候,终端会显示:“你叫什么呀?”然后我输入了“吴枫”;终端继续显示“你最喜欢的电影是什么?”然后我输入了“霸王别姬”;终端继续显示“你最喜欢的歌是什么”,然后我输入了“monica”。
接着,终端显示了最后三句话:吴枫 很高兴认识你。霸王别姬 也是我最喜欢的电影。不过,我没听过 monica。我会找机会去听的。
如果换一个人,输入的答案分别是“大头儿子”“阿凡提”“丢手绢”,那么终端就会显示:大头儿子 很高兴认识你。阿凡提也是我最喜欢的电影。不过,我没听过丢手绢。我会找机会去听的。
这个程序的逻辑,是不是似曾相识呢?比如当我们注册一个邮箱后,看到的界面可能会是:你好,XX(你的用户名)。界面会根据我们不同的用户名,显示不同的内容。
当你学完了今天的知识,你也能用Python写出一个有这样功能的程序。(▽) 也算是一种比较原始的智能机器人了。
而这个程序所需要的,就是知识树上的这四样东西。马上开始吧!
先告诉你两个好消息。整数和字符串,你昨天就见过了!只是不知道他们的名字而已!然后print() 函数,你昨天也接触了一下,嘻嘻,都不算是全新的知识。
那下面我们先来说整数和字符串:
print(1+1)
print(‘不要温和地走进那个良夜’)
第1行:print() 里面的1就是【整数】,就是咱们中学数学里的整数,没毛病。
第2行:print() 里面的 ‘不要温和地走进那个良夜’ 就是【字符串】,用单引号括起来的文本,就是字符串。
好,请你告诉我,下面哪个是字符串,哪个是整数?
‘hello panda’
108
第1行是字符串,第2行是整数,它们长得不一样,但都是数据,现在先记住它们的样子就好。
接下来是变量,它的英文是name。
一个公认的常识是:计算机需要存储和操作成千上万的数据。这就好比,我们家里有成千上万的东西,那这个时候,我们该怎么存放和使用这些东西呢?
如果从常识出发,我们可以把不同的东西放在不同的盒子里,并且给不同的盒子做上不同的标记,这样家里就会整整齐齐,也方便我们取用东西。
这样一来,你找东西,用东西的时候,是不是就很方便了呢?
嘿嘿,计算机也是这么干的,它会把成千上万的数据放在不同的盒子里,这样才方便它存储和操作数据。
这个盒子在Python中就叫变量。
变量像是一个带标签的盒子,你可以把数据放到盒子里面去。
体现在Python中,代码是这样式儿的:
num = 18
sir=‘coco’
print(sir)
第1行代码:定义了一个变量,取名为sir,并且把‘coco’这个字符串放到变量里。第2行代码:把 变量sir 里面的内容打印在屏幕上。
练习时间来咯】请打印出自己的名字,你只要把上面的代码写下来,把吴枫改成自己的名字,再点击enter运行就好了。不要漏掉单引号,也不要用中文的单引号。
print(‘coco’)
终端
Coco
这两行代码告诉了我们两个道理:
1、计算机是一行一行去执行程序的,就像你写文章一样。计算机先理解了你把字符串’coco’放到了变量sir里面,然后再去打印变量。
2、变量一定要在定义和赋值之后,才能使用。
如果不赋值,不把数据放到变量中,会咋样呢?
print(age)
来,运行看看这个代码好了:终端会给你报错(就是执行不出你想要的结果)。
只用关注最后一行:它会显示:“NameError: name ‘age’ is not defined”。意思是——变量错误:变量age没有被定义啊。所以一定要先定义赋值,然后再使用变量。
现在你已经知道了变量是存放数据的小盒子。可如果你去搜百度百科,还会找到这样一条解释:变量,是指没有固定的值,可以改变的数。
也就是说,变量是可以改变的。来看代码:
age = 0
age = age+30
print(age)
想想看,运行这段程序的话,计算机会打印出什么结果呢?提示:计算机是一行一行往下去执行程序的;赋值语句的运行逻辑,是先计算出等号右边的结果,再把计算结果赋值给左边的变量。
好,来运行一下,检验一下你的猜想好了:
age = 0
age = age+30
print(age)
答案是30,为什么?
因为赋值是把等号右边的内容放到等号左边的变量里,而程序是一行一行往下执行的,在执行到第一行时,age变量被赋值了0,而执行到第二行时,先从age变量中取出0加上30,然后age又被重新赋值成30,再打印age,所以最后输出的结果是30。
现在,你理解变量的“变”是什么意思了吧?
做一道选择题巩固一下:
那么,如上图中的代码,终端会输出什么结果?
赋值是把等号右边的内容放到等号左边的变量里,而程序是一行一行往下执行的,在执行到第一行时,age变量被赋值了30,而执行到第二行时,age变量中的内容被重新赋值成60,所以最后输出的结果是60。
这就是变量的用法啦~
搞定变量啦~
再来看input() 函数。
input的中文意思是——输入。
而input() 函数的作用是——程序运行到某个地方,需要用户在键盘上输入内容,并按下回车键,以让程序继续。
input(‘请输入你的宠物名字:’)
此处划重点!它重点到值得我去说三遍!当你的程序里使用了input(),在运行之后:如果你不输入信息,程序就会一直等待着你显示【运行中】。如果你不输入信息,程序就会一直等待着你显示【运行中】。如果你不输入信息,程序就会一直等待着你显示【运行中】。
你可以试着运行一下这个程序,接着请你在终端显示区域(右边的方框)输入一些信息,再点击回车(enter键)。试试看吧。
input(‘请输入你的宠物名字:’)
就是这样。input() 括号里的内容是你希望提示用户的信息,用单引号括起来,来看两个例子:
input(‘你最近忙啥呢?’)
input(‘Everything is going well?’)
你可以根据情况输入不同的提示语噢~
不过问题来了,如果我们想要继续使用用户输入的这个数据,那我们该怎么办呢?
这时,变量就派上用场了,请看代码:
a = input(‘请输入你的用户名:’)
print(a)
我们把获取到的数据放到了变量a里面,接下来就可以对这个数据做处理,比如打印一下。请你看代码,运行,记得要在终端区域输入答案哟。
a = input(‘请输入你的用户名:’)
print(a)
【练习时间来咯】请你用input() 函数获取用户的性别,并使用print()函数打印出来。提示:只要把上面那个例子里的提示语改变一下就好。
a = input(‘请输入你的性别:’)
print(a)
b = input(‘请输入你的性别:’)
print(b)
现在你应该理解input() 的用法了。
对了,input() 函数会把你输入的内容作为字符串的数据类型保存。
nput() 函数的意义就在于可以和用户产生灵活的互动,也有很多实际的应用场景:比如登录邮箱时,你需要输入登录名和密码才能进入新的页面。
总结一下:
到这里,我们就学完了input()函数了。
接下来是print()函数,虽然昨天已经接触过了,但我们还是要复习一下滴:
来看代码:
print(‘一日看尽长安花’)
print(314)
print() 函数能把括号里的内容(或许是字符串,或许是整数)显示在屏幕上,你对这并不陌生。
但咱们今天不是学了变量嘛,请看下面的代码:
name=‘coco’
birthplace=‘深圳’
print(name)
print(birthplace)
print(‘我叫’+name)
print(‘出生在’+birthplace)
我想请你抄写一遍这段代码,点击运行,看看最后屏幕上显示了什么。
记住,除了中文,其他全部符号(括号、单引号、等号)和文本都使用英文。
自己思考30s,把这几行代码的意思想一想?想好之后,点击enter查看答案。
name=‘coco’ #定义了变量name,赋值为’吴枫’
birthplace=‘深圳’ #定义了变量birthplace,赋值为’厦门’
print(name) #打印变量nameprint(birthplace)
#打印变量birthplace
print(‘我叫’+name) #打印字符串’我叫’和变量name
print(‘出生在’+birthplace) #打印字符串’出生在’和变量birthplace
#号【#】之后的内容,不管你写啥,计算机都会忽视,所以可以作为代码的注释,方便我们理解代码。
第1-5行代码你应该都能看懂。而第7和第8行代码出现了一些你没见过的东西。
第7行代码,变量name里放的是字符串,通过加号,与字符串’我叫’合并在了一起,并通过print() 函数被打印了出来。
第8行代码也是一样,变量birthplace放的是字符串,通过加号,和字符串’出生在’合并在了一起,然后通过print()函数被打印了出来。
另外,代码中第3行和第6行的空行,并没有什么特殊的意义,只是为了帮助你看得更清晰,之后代码的空行也是如此。
到这里,知识你已经学完了,你已经能写出开头的小程序了呀!
(⊙o⊙)…虽然看到了你错愕的眼神,但我真的没骗你。再来看一次开头的小程序。
一起想一想,这段对话中的每一行代码分别可以用什么知识实现,思考30s后,点击enter查看提示:
试着自己写写看代码,对新手来说,重要的不是你有没有写出来,而是你有没有尝试去写。
答案是这样的,你可以对照一下:
name=input(‘你叫什么呀?’)
movie=input(‘你最喜欢的电影是什么?’)
music=input(‘你最喜欢的歌是哪首?’)
print(name+‘很高兴认识你。’)print(movie+‘也是我最喜欢的电影。’)print(‘不过,我没有听过’+music+’。我会找机会去听的。’)
#1、2、3行代码用input()函数取得了3个数据,并放在3个变量中。#5、6、7行代码用加号把字符串和变量拼接了起来,一起打印了屏幕上。
好啦,现在,我们就学完了今天的知识了。
简单复习下我们学过的内容。
好,那么现在,我们已经完成了第1关的内容,来看看你搞定了知识树上的哪些内容吧。
再来凝视一下这棵知识树,在基础知识阶段,所有的知识分为数据、函数和控制流三大部分。
第一大部分是数据:数据类型可以理解为放在变量这个盒子中的东西。数据类型下的字符串和整数你已经接触了,所以你今天会看到字符串和整数都可以赋值给变量。
基础阶段的第二大部分是函数:你已经学了print() 函数和input() 函数,能大概体会到函数是能帮你实现某些特定功能的代码。
基础阶段的第三大部分是控制流,还没接触到,但也是很妙的东西,第3关就能揭开面纱。
如果你对上面这话感觉懵懵的,没关系,就是有个大概的感觉就行,也不用记忆,我们每一关都还会重复,在学习新知识的过程中,你会自然而然地理解。
当然,如果你学得不过瘾,还可以继续去学第二关。
总之,你已经写完了第一个完整的程序,所以,正式欢迎你踏入编程世界!
最后来一个小练习:根据运行结果来反推出它的代码应该怎么写,运行成功后,请你给代码加注释。
输入一个你错过的人:紫霞仙子
输入你最想对ta说的话:我爱你
输入一个时长(比如三分钟):一万年
曾经有一份真挚的爱情放在我面前,那个人的名字是紫霞仙子
可我没有珍惜,如果上天能再给我一次机会,我会对ta说一句话:我爱你
如果非要给这句话加上一个期限,我希望是一万年
Talk is cheap, show me the code(空谈无意,秀代码):
A = input(‘输入一个你错过的人:’)
#用input()函数获取用户数据,并放到变量A里面
B = input(‘输入你最想对ta说的话:’)
#用input()函数获取用户数据,并放到变量B里面
C = input(‘输入一个时长(比如三分钟):’)
#用input()函数获取用户数据,并放到变量C里面 print(‘曾经有一份真挚的爱情放在我面前,ta的名字是’ + A) #通过加号,把获取到的数据A和字符串拼接起来,并用print()函数打印出来
print(‘曾经有一份真挚的爱情放在我面前,那个人的名字是’ + A)
print(‘可我没有珍惜,如果上天能再给我一次机会,我会对他说三个字’+ B)
#通过加号,把获取到的数据B和字符串拼接起来,并用print()函数打印出来
print(‘如果非要给这句话加上一个期限,我希望是’+ C)
#通过加号,把获取到的数据C和字符串拼接起来,并用print()函数打印出来
以上