从Scratch到Python(中)

从Scratch到Python(中)

五、if语句

5.1 流程的分支

前面的程序都是顺序流程,从第一条语句开始执行,直到最后一条语句。有时候,我们需要程序里的某一段,在满足某一条件时被执行,条件不满足时不执行,这就需要用到if语句。

从Scratch到Python(中)

if语句就是用来判断某个条件是否满足。如果满足,就执行下面缩进的几个语句(就是上图中的语句块),否则就跳过语句块,执行下面的代码。

5.2 格式

在Python里,与Scratch里的“如果< >那么”积木等效的就是if语句。如:

if timsAnswer == correctAnswer:
	print "You got it right!"

如果变量timsAnswer与变量correctAnswer的值相等,就打印字符串“You got it right!”。不相等,就不打印。注意:if语句后面有一个冒号,这个必须有。

if语句后面往往有多个语句。那么问题来了,当if后面的条件符合时,到底执行下面哪几条语句呢?在Scratch里,我们是把条件成立要执行的所有积木都嵌入到“如果< >那么”积木里面。Python是这样做的,用Tab键将满足条件要执行的语句全部缩进。譬如:

if timsAnswer == correctAnswer:
	print "You got it right!"
	print "Good by!"
abc = 100

如果条件满足,就打印两行字串,再执行下面的赋值语句“abc = 100”。如果条件不满足,就不执行两个print语句,直接执行后面的赋值语句。

因此,在Python里,书写格式非常重要,它影响程序流程。那么,什么时候需要缩进呢?如果某行末尾是冒号,下面就是一个语句块,凡是属于这个语句块的语句都要缩进4格。

5.3 比较操作符(也叫关系操作符)

在Scratch里,比较积木只有<、=、>三个。Python就多了:相等==、不等!=、大于>、小于<、大于等于>=、小于等于<=。这样,编程时就方便多了。

5.4 检查范围

你还可以用两个比较符合起来用来确定一个范围。如:

if 8 < age < 12:

当年纪是9、10、11岁时,判断为true,否则为false。如果改成:

if 8 <= age <= 12:

则当年纪在8到12岁时,为true。

5.5 逻辑操作符

and相当于Scratch的“< >与< >”积木,当两个操作数都是true时,结果才是true,只要有一个操作数是false,结果就是false。or相当于“< >或< >”,只要有一个操作数是true,结果就是true,两个都是false时,结果才为false。not相当于“< >不成立”,后面的操作数为true时,结果为false,操作数为false时,结果为true。

5.6 判断,再判断

有时,判断之后还要判断。譬如,我们要为8岁及以上的学生创建一个游戏,又要求她们至少已上了三年级。程序可以是:

if age >= 8:
	if grade >= 3:
		print("You can play this game.")

你可以看出,第二个语句缩进了四个空格,而第三个语句缩进了八个空格。

if语句还可以更多层,只需要你一层一层的缩进,它就会按照你的意图运行代码。

在Scratch里就是“如果< >那么”积木里再嵌套一个“如果< >那么”积木。

5.7 if…else语句

从Scratch到Python(中)

相当于Scratch的“如果< >那么—否则—”积木。譬如:

if age >= 8:
	if grade >= 3:
		print("You can play this game.")
	else:
		print("Sorry, you can’t play the game.")

如果你8岁或更大了,就进一步判断你是否已读3年级或更高,如果true,打印“你可以玩这个游戏。”,否则打印“对不起,你不能玩这个游戏。”

六、输入

2.3节中介绍了“p = input("Product = ")”。其中的input()是个函数,里面的参数"Product = "是个提示字串,提示你需要输入什么数据。它先显示这个提示字符串,然后等待你输入,你输入后,就把这个输入作为函数的返回值,相当于Scratch里的“回答”积木。你可以把它赋给一个变量然后再使用,当然也可以直接使用。不过,一般都是先放进变量里存储。注意,input()返回的是字符串,即使你输入的是整数或浮点数,它返回的仍然是字符串。

七、for循环

7.1 先说个例子

我们让Python求出前10个斐波那契数列。

a1 = 0
a2 = 1
print(a1)
print(a2)
for i in range(1, 9):
	a3 = a1 + a2
	print(a3)
	a1 = a2
	a2 = a3

这里,a3是当前数,a2是当前数的前一个数,按照斐波那契数列定义,初值是1,a1是再前一个数,初值是0。先打印a1和a2,再进入for循环。i是循环变量,它的范围(英语range就是范围)1到8(不是1到9)。在循环里,先计算出当前数,并打印。然后把a2复制到a1,再把a3复制到a2。也就是说,把前一个数变成再前一个数,把当前数变成前一个数。这样,下一循环就能推算下一个数项放在a3里了。

7.2 格式

再来看这段代码,你会发现for语句下面的四条语句全是缩进的。for语句下面缩进的语句集合,就是这个for的循环体。每次循环,就执行一次这个循环体,也就是依次执行构成循环体的几条语句。

因此,再重复一遍,书写Python程序时,格式很重要!

7.3 枚举也可以

7.1节中,循环变量的取值是一个范围。如果循环变量不是一组连续数,怎么办?我们可以用枚举。如:

for looper in [3, 5, 7, 9]:

循环变量就只取3、5、7、9这四个奇数。

Python很灵活,既可以枚举数值,还可以枚举字符串。如:

for ID in ["Mike", "Dora", "Michael"]:
		print(ID)

而7.1节的程序,第5条语句也可改成:

for i in [1, 2, 3, 4, 5, 6, 7, 8]:

7.4 指定步长的range()

上节第一个循环“for looper in [3, 5, 7, 9]: ”,因为是个递增其实也可以使用范围来指定循环变量:

for looper range(3, 9, 2):

它的意思是,范围是3到9,不过是每次循环加2。因此循环变量是3、5、7、9。这个range()有三个参数,第一、二个依然是下限和上限,第三个是步长。譬如,你要给出100以内能被7整除的数,可以写成:

for looper range(7, 100, 7):

7.5 多重循环

如果我们要编写一个打印乘法表的程序,就得使用双重循环。

for i in range(1, 10):
      for j in range(1, 10):
            print(tr(i) + "X" + str(j) + "=" + str(i * j) + "	",)
      print()

在这个程序里,被乘数是变量i,乘数是变量j。第一个print语句是第二个for的语句体。它的末尾有个逗号,意思是打印完后光标不换行。也就是说,在同一行接着打印下一个乘法式。第二个print语句是第一个for的语句体,它没有参数,作用就是换行。这样,内循环一次打印一个式子,外循环一次就完成了相同被乘数的9个式子的打印。

函数str()是将数值转换成字符串,这样,就能和“X”、“=”等拼成一个乘法式。

" "是一个特殊的字符——转义符。" "是横向制表符,光标跳到下一个制表位(8个位置为一个制表位)。其作用和键盘左侧的Tab键是一样的,相当于程序“按”了一下Tab键。

7.6 break与continue

在循环体内,如果出现break语句,就直接跳出循环。

在循环体内,如果出现continue语句,就结束本次循环,转到循环头进行下一次循环。

展开阅读全文

页面更新:2024-03-14

标签:步长   被乘数   循环体   式子   初值   冒号   数列   积木   字符串   变量   语句   个数   条件   格式   程序

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top