青少年Python编程基础15天(第十三天)
上次的课后作业大家做的怎么样啊?作业的完整代码像下面这样:
上图所示的代码就是标准的for循环语句啦,那么for语句都能做些什么呢?我们举个例子:每年一到过春节的时候,我们都要给长辈拜年,家里有爸爸、妈妈、爷爷、奶奶、姥姥、姥爷,我们要对每个长辈说过年好,那么我们可以用for语句来解决这件事情:
1、首先把my_family列表中的“自己”删除掉,列表像下面这样:
my_family = ("爸爸", "妈妈", "爷爷", "奶奶", "姥姥", "姥爷")
2、在下一行添加for循环语句,设定一个变量name,每次读取列表中的名字都要赋值给变量name,像下面这样:
my_family = ("爸爸", "妈妈", "爷爷", "奶奶", "姥姥", "姥爷")
for name in my_family:
3、然后在for循环里面(缩进后)用print命令打印出name变量和字符串“过年好”,完整代码像下面这样:
my_family = ("爸爸", "妈妈", "爷爷", "奶奶", "姥姥", "姥爷")
for name in my_family:
print(name + "过年好!")
4、我们运行一下代码,结果应该像下面这样:
怎么样?!完美解决了拜年的问题,哈哈。
那么今天我们讲什么呢?今天我们讲另外一个循环语句:while。while语句也是一个循环语句,但是与for循环语句不同的是,for循环只是在列表或者字典中从头到尾读取一遍里面的元素,就像上面讲的拜年的例子一样,每个人说一句“过年好”然后就结束了。而while语句是一直循环下去,直到某个条件为真时候为止。举个例子:丢手绢游戏:几个小朋友围坐在一起,其中有一个人身上藏着手绢,找手绢的小朋友每次找一个小朋友,如果手绢在他身上,那么游戏结束(这个就是条件),如果手绢没在他身上,那么游戏继续。这种条件的循环就是while循环,标准的代码像下面的猜数字:
x = (1,2,3,4,5)
n = 3
while n == 3:
print("游戏结束")
上面的代码中,x是一个列表,里面有:1,2,3,4,5;5个数字,设定一个变量n给它赋值3;然后我们写while循环语句,while后面跟一个条件,上面的条件是n等于3,这里要注意,在Python语言中,判断变量两边是否相等用两个等于号“==”而不是一个,用一个等于号“=”就是赋值,我们判断n是否等于3,如果是,那么用print命令打印“游戏结束”。
上面的例子如果我们运行,会一直打印“游戏结束”,因为变量n已经赋值为3,所以它会一直运行,直到我们点击“stop”按钮或者关闭Thonny。
为了防止上面的while循环语句一直打印“游戏结束”导致最后电脑死机,我们要想办法停止它,我们可以在下一行添加一个单词“break”跳出循环,像下面这样:
好啦,上面的例子就是while循环语句的基本格式,到此,Python语言的主要三种语句就都讲完啦,我们可以做一些实际的小练习来巩固我们学到的内容。我们做什么呢?做一个猜拳的小游戏吧。我们先用百度脑图做一个思路,思路大致是下面这样:
首先要让电脑从“石头”、“剪刀”、“布”中随机选一个,然后让用户选择一个跟电脑的进行对比,如果相等则“游戏继续”;如果用户输了则提示“你输了,继续”;如果用户赢了则提示“恭喜你,你赢了”然后退出。好的,思路有了,开始写代码吧:
1、电脑选择部分,石头、剪刀、布都要汉字的话打字有点麻烦,我们用数字1,2,3来代替。做一个列表,名字为x,然后里面的元素是数字1,2,3,代码像下面这样:
x = (1,2,3)
那么怎么来让电脑随机选择一个数呢?我们需要调用Python的一个函数模块“random”;这里我要 说一下调用的概念,什么是调用呢?调用也叫引用,意思就是用其它的工具模块来帮助我们完成一件事,举个例子:我们在写作业的时候突然写错了,需要用橡皮擦掉,这个橡皮檫就是我们要用的工具,可是橡皮檫不知道放在哪了,我们可以问妈妈“我的橡皮放在哪了”,妈妈说“放在书柜最右边第三格里面啦”,可能还会跟你说“怎么总是丢三落四”^_^,这时我们要用书柜最右边第三格里面的橡皮檫,这就是调用啦。那么调用该怎么写呢?我们用单词“import”来调用,代码像下面这样:
import random
注意:一般情况下import都放在文件的最上面,这样方便以后查看程序文件的引用情况。
好的,我们引用了random模块,但是我们要用random模块的什么工具呢?我们用choice这个工具,这个工具的作用就是随机选择一个元素。整体的代码像下面这样:
我们用random的choice方法来从x列表中随机选取一个数并赋值给变量computer,这时如果我们用print方法打印变量computer的话,会看到它存储的数值每次都不一样(也可能一样,因为是电脑随机选取的,我也猜不出每次它喜欢选什么)
2、接下来我们写用户输入的部分,用户输入需要用到input命令,input的括号里面可以加一个参数,也就是需要说明的字符串,我们可以写上“请您选择相应的数字:1:石头;2:剪刀;3:布:”,然后把用户的输入赋值给变量“people”代码像下面这样:
people = input("请您选择相应的数字:1:石头;2:剪刀;3:布:")
对啦,input获取到的都是字符串,我们如果想进行比较,还需要将用户输入的数字从字符串类型转换成整数类型,那么上面的代码应该改成下面这样:
people = int(input("请您选择相应的数字:1:石头;2:剪刀;3:布:"))
3、接下来我们就该进行对比了,我们用if语句来进行判断吧:判断三种情况,一种是用户输了,一种是平局,一种是用户赢了。那么什么情况下用户输了呢,我们想一想,如果电脑出石头(选择数字1),用户选择剪刀(数字2)这时候会输,还有电脑选择剪刀(数字2),用户选择布(数字3);再有就是电脑选择布(数字3),用户选择石头(数字1)。是不是只有这三种啊,那么用代码来表示的话应该是分别是下面这个样子:
电脑出石头(数字1),用户出剪刀(数字2):
computer == 1 and people == 2
电脑选择剪刀(数字2),用户选择布(数字3):
computer == 2 and people == 3
电脑选择布(数字3),用户选择石头(数字1):
computer == 3 and people == 1
是不是有上面这三种情况下用户就输了啊,我们在if语句中用“or”(or的意思就是或者)把这三种情况连起来判断,代码像下面这样:
import random # 引用random模块
x = (1,2,3) # 设置一个列表x
computer = random.choice(x) # 从列表x中随机选择一个数赋值给变量computer
people = int(input("请您选择相应的数字:1:石头;2:剪刀;3:布:"))
if (computer == 1 and people == 2) or (computer == 2 and people == 3) or (computer == 3 and people == 1):
print("抱歉,您输了,请继续:")
哇,if语句的代码有点长啊,看着不方便,我们把它分行显示,看着方便些,Python语言里,给代码分行用反斜杠“\”,代码像下面这样:
import random # 引用random模块
x = (1,2,3) # 设置一个列表x
computer = random.choice(x) # 从列表x中随机选择一个数赋值给变量computer
people = int(input("请您选择相应的数字:1:石头;2:剪刀;3:布:"))
if (computer == 1 and people == 2) or \
(computer == 2 and people == 3) or \
(computer == 3 and people == 1):
print("抱歉,您输了,请继续:")
这样看起来就好多了。
4、那么平局的情况有几种呢?好像只有一种,就是电脑的选择和用户的选择是一样的,我们用elif来判断平局的情况,并打印字符串“挺好,平局,请继续:”,代码像下面这样:
import random # 引用random模块
x = (1,2,3) # 设置一个列表x
computer = random.choice(x) # 从列表x中随机选择一个数赋值给变量computer
people = int(input("请您选择相应的数字:1:石头;2:剪刀;3:布:"))
if (computer == 1 and people == 2) or \
(computer == 2 and people == 3) or \
(computer == 3 and people == 1):
print("抱歉,您输了,请继续:")
elif computer == people:
print("挺好,平局,请继续:")
5、那么什么情况下会赢呢?是不是除了输和平局就是赢了啊,所以我们用else判断就可以了,然后用print打印出“恭喜你赢了比赛!”代码像下面这样:
import random # 引用random模块
x = (1,2,3) # 设置一个列表x
computer = random.choice(x) # 从列表x中随机选择一个数赋值给变量computer
people = int(input("请您选择相应的数字:1:石头;2:剪刀;3:布:"))
if (computer == 1 and people == 2) or \
(computer == 2 and people == 3) or \
(computer == 3 and people == 1):
print("抱歉,您输了,请继续:")
elif computer == people:
print("挺好,平局,请继续:")
else:
print("恭喜你赢了比赛!")
小明你又要说什么?......你说老师偷懒是吗?不是的,我这是为了少写点代码,如果判断的话,用elif判断赢了的三种情况,里面的代码是这样的:
elif (computer == 1 and people == 3) or \
(computer == 2 and people == 1) or \
(computer == 3 and people == 2):
看看,如果用elif的话我们要写这么多代码,是不是用else更省事啊,好吧,老师确实是有点偷懒了哈哈。
好的,我们这个猜拳游戏的核心判断部分就写完了,但是有个问题,这个if语句是不循环的,只判断一次,也就是说每次运行这个游戏我们只能玩一次,如果我们想只有赢了才结束程序,输了和平局都继续玩,该怎么办呢?对,我们用while循环语句,只有当条件为真的时候才跳出这个循环,这样就可以一直玩下去。那么我们该怎么改写呢?我们首先在x变量那一行代码下面添加一个while循环语句:while True,然后将后面的代码都包含进来(每一行都空四个空格),代码像下面这样:
import random # 引用random模块
x = (1,2,3) # 设置一个列表x
while True:
computer = random.choice(x) # 从列表x中随机选择一个数赋值给变量computer
people = int(input("请您选择相应的数字:1:石头;2:剪刀;3:布:"))
if (computer == 1 and people == 2) or \
(computer == 2 and people == 3) or \
(computer == 3 and people == 1):
print("抱歉,您输了,请继续:")
elif computer == people:
print("挺好,平局,请继续:")
else:
print("恭喜你赢了比赛!")
然后我们在else的结果下面用break跳出循环,这样就能实现赢了比赛结束程序的效果了,整体的代码像下面这样:
好啦,今天的课程就讲到这,今天的作业就是大家回去把这个猜拳游戏做一下,然后让爸爸妈妈也来玩玩这个游戏,看看他们有什么建议和意见没有。

添加 家长论坛微信
全部 0条评论