前面的文章中我们已经学习了Python的许多知识点,了解了Python的基本概念和一些语法知识,算是对Python有了一个很好的了解。在接下来的最后一关,我们来一场华丽的华山论剑,我们将前面十三关的重要知识点浓缩成下面两个问题,大家一起来比拼下 Python 的武力值,为我们的课程画上一个完美的句号。
1. 题目一
实现一个猜数字游戏,首先使用 random 模块中的随机函数生成一个位于 [1, 100] 范围内的数字,然后让机器人玩家来猜,比较机器人玩家猜的数字和生成的随机数,如果随机数大于玩家猜的数字告诉玩家猜的数字过小,如果随机数小于玩家猜的数字告诉玩家猜的数字过大,直到玩家猜到正确的数字。 提示:生成 1~100 的随机数可以使用 random.randint(1, 100)。
(1)第一步
首先,这是一个猜数字的游戏,那我们肯定要让系统自动生成一个随机数字,然后让用户输入一个数字,将随机生成的数字和用户输入的数字进行比较,显示比较后的结果,如果它们的大小不一样,则再进行比较。
(2)第二步
生成随机数字,我们要运用到 random 模块;让用户输入数字,我们需要运用到 input;将生成的数字和用户输入数字进行比较,我们需要运用 if 语句进行判断;在进行比较时如果两个数字大小不相符,则要让我们再次输入数字,这样我们就要运用到循环了,我们这里运用 while 循环。
print("这是一个猜数字的游戏,游戏规则:\n" "1.猜一个1——100之间的整数\n" "2.只有5次机会\n" "3.如果随机数大于玩家猜的数字则告诉玩家“猜的数字过小了!”;如果随机数小于玩家猜的数字则告诉玩家“猜的数字过大了\"\n" "4.猜对了会显示Congratulations!")(3)第三步
接下来,我们需要生成一个随机数字,在这里我就随机生成一个 1-100 之间的整数了,大家也可根据情况自行更改。我们这里要导入一下 random 模块,当然如果你电脑内没有安装的 random 模块的话我们需要安装一下 random 模块,需要进行安装。 导入模块代码如下:
import random接下来,我们用 random 随机生成一个 1-100 之间的随机数,并将生成的随机数赋值给变量 n,代码如下:
n = random.randint(1, 100)生成好随机数字那我们就要来猜数字了,因为规则中只有 5 次机会,所以我们只要循环 5 次,那我们就要再定义一个变量 a,来计算循环的次数,代码如下:
a = 0现在,我们就可以来写循环了,因为只要循环 5 次,所以我们要给循环加一个 a<5 的条件,当然,每进行一次循环,我们就要把 a 的值增加 1,代码如下:
while a < 5: a = a + 1游戏中,我们要让玩家输入一个数字,所以我们要在循环中增加如果 input 函数,并用一个变量来接收用户输入的数字,代码如下:
while a < 5: member = input("请输入一个1-100之间的整数:") a = a + 1因为使用 input 输入的一个数字是字符串类型的,是不能和自动生成的随机数进行比较的,所以我们要将输入的字符串类型变成整形类型,代码如下:
while a < 5: member = input("请输入一个1-100之间的整数:") menber = int(menber) a = a + 1现在,我们就可以判断两个数字的大小了,我们运用 if...elif...else 进行判断,代码如下:
while a < 5: member = input("请输入一个1-100之间的整数:") member = int(member) if n > member: print("你猜的小了!") elif n < member: print("你猜的大了!") else: print("Congratulations!") pass a = a + 1因为除了猜的大了和猜的小了,就只可能是猜中了,所以 else 中写的是“congratulations”,因为我们已经猜中了,不用继续执行这个循环,所以在循环的末尾加了 pass 结束这个循环。
(4)第四步
在最后,我们再加上一句“游戏结束!”,那我们的这个程序就完成啦!整个程序的代码如下:
import random # 导入random模块 print("这是一个猜数字的游戏,游戏规则:\n" "1.猜一个1——100之间的整数\n" "2.只有5次机会\n" "3.如果猜的数字大于要猜的数字则显示“你猜的大了!”;如果猜的数字小于要猜的数字则显示“你猜的小了\"\n" "4.猜对了会显示Congratulations!") # 打印游戏规则 n = random.randint(1, 100) # 生成一个随机数 a = 0 # 定义变量 while a < 5: # while循环 member = input("请输入一个1-100之间的整数:") # 输入数字 member = int(member) # 将输入数字转化为整形类型 if n > member: # 将输入数字和生成的数字进行比较 print("你猜的小了!") elif n < member: print("你猜的大了!") else: print("Congratulations!") pass a = a + 1 print("游戏结束!")2. 题目二
实现一个剪刀、石头、布的游戏,首先使用 random 模块的函数从列表 ['剪刀', '石头', '布'] 中随机选择一个,然后机器人玩家也随机出一个,比较两个,判断玩家是输是赢。最后给出机器人玩家赢了几次,输了几次,平了几次。
提示:从列表 '剪刀', '石头', '布'] 随机选择,可以使用 random.choice(['剪刀', '石头', '布']
熟悉具体的设计流程:
1.明确项目目标:(为了方便理解,玩家只出布)
我们会通过今天的作业和电脑玩一个剪刀石头布的游戏:电脑随机出拳,我们可选择出什么。
2.分析过程,拆解项目
小游戏可以拆解为:双方出拳→双方亮拳(打印一下)→判断胜负
3.逐步执行,代码实现
基本元素: • 玩家、电脑 • 要能展示 • 最终胜负 下面,我们就可以开始写代码啦!那么放在今天这个实操中,项目流程如下:
1.双方出拳
我们要让双方选择出拳,才能判断胜负。 我们可以设置变量 computer_choice 代表电脑的出拳选择,设置变量 user_choice 代表你的出拳选择。 电脑的出拳,我们可以使用 random.choice()来随机选择;我们的出拳,可以手动输入我们出拳的类型。 注: 判断下输入:当输入的内容不是石头剪刀布时,电脑会提醒'输入有误,请重新出拳'。 判断的语句为:while a not in list1,即当元素 a 不在列表 list1。
import random # 出拳 punches = ['石头','剪刀','布'] computer_choice = random.choice(punches) user_choice = '' user_choice = input('请出拳:(石头、剪刀、布)') # 请用户输入选择 while user_choice not in punches: print('输入有误,请重新出拳') # 当用户输入错误,提示错误,重新输入 user_choice = input()终端显示:
第一种结果: 请出拳:(石头、剪刀、布)布 第二种结果:(输入有误,会提醒直到输入符合) 请出拳:(石头、剪刀、布)布头 输入有误,请重新出拳 布2. 双方亮拳
你和电脑已经对自己要出的拳进行了选择,接下来,我们需要知道双方的出拳类型。 使用 print()函数补充亮拳的结果。
import random # 出拳 punches = ['石头','剪刀','布'] computer_choice = random.choice(punches) user_choice = '' user_choice = input('请出拳:(石头、剪刀、布)') # 请用户输入选择 while user_choice not in punches: print('输入有误,请重新出拳') # 当用户输入错误,提示错误,重新输入 user_choice = input() # 亮拳 print('————战斗过程————') print('电脑出了:%s' % computer_choice) print('你出了:%s' % user_choice)终端显示:
请出拳:(石头、剪刀、布)布 ————战斗过程———— 电脑出了:剪刀 你出了:布3. 判断胜负
在前面两步,电脑和你已经选择完出拳的类型并亮拳后,只差最后一步:根据结果判断胜负。 •两方出拳一致:平局 • 你出石头,电脑出剪刀;你出剪刀,电脑出布;你出布,电脑出石头:你获胜; • 其他情况:你输了。
import random # 出拳 punches = ['石头','剪刀','布'] computer_choice = random.choice(punches) user_choice = '' user_choice = input('请出拳:(石头、剪刀、布)') # 请用户输入选择 while user_choice not in punches: print('输入有误,请重新出拳') # 当用户输入错误,提示错误,重新输入 user_choice = input() # 亮拳 print('————战斗过程————') print('电脑出了:%s' % computer_choice) print('你出了:%s' % user_choice) # 胜负 print('—————结果—————') if user_choice == computer_choice: # 使用if进行条件判断 print('平局!') elif (user_choice == '石头' and computer_choice == '剪刀') or (user_choice == '剪刀' and computer_choice == '布')or (user_choice == '布' and computer_choice == '石头'): print('你赢了!') else: print('你输了!')终端显示:
请出拳:(石头、剪刀、布)布 ————战斗过程———— 电脑出了:布 你出了:布 —————结果————— 平局4. 加入循环
最终代码:在外部加了一个 while……循环,这样你不让它结束,就可以一直玩下去啦。
import random # 出拳 while True: punches = ['石头','剪刀','布'] computer_choice = random.choice(punches) user_choice = '' user_choice = input('请出拳:(石头、剪刀、布)') # 请用户输入选择 while user_choice not in punches: # 当用户输入错误,提示错误,重新输入 print('输入有误,请重新出拳') user_choice = input() # 亮拳 print('————战斗过程————') print('电脑出了:%s' % computer_choice) print('你出了:%s' % user_choice) # 胜负 print('—————结果—————') if user_choice == computer_choice: # 使用if进行条件判断 print('平局!') elif (user_choice == '石头' and computer_choice == '剪刀') or (user_choice == '剪刀' and computer_choice == '布')or (user_choice == '布' and computer_choice == '石头'): print('你赢了!') else: print('你输了!') a1 = input('要继续游戏吗,请输入n退出,输入其他继续:') if a1 == 'n': print('\n【结束游戏】') break终端显示:
请出拳:(石头、剪刀、布)布 ————战斗过程———— 电脑出了:剪刀 你出了:布 —————结果————— 你输了! 要继续游戏吗,请输入n退出,输入其他继续:y 请出拳:(石头、剪刀、布)布 ————战斗过程———— 电脑出了:石头 你出了:布 —————结果————— 你赢了! 要继续游戏吗,请输入n退出,输入其他继续:n 【结束游戏】