挑战Python的语法练习

简介: 前面的文章中我们已经学习了Python的许多知识点,了解了Python的基本概念和一些语法知识,算是对Python有了一个很好的了解。在接下来的最后一关,我们来一场华丽的华山论剑,我们将前面十三关的重要知识点浓缩成下面两个问题,大家一起来比拼下 Python 的武力值,为我们的课程画上一个完美的句号。

前面的文章中我们已经学习了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模块,安装方法如下:

https://www.zhihu.com/zvideo/1400555788406960128

导入模块代码如下:

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
【结束游戏】

3.程序运行截图

网络异常,图片无法展示
|

相关文章
|
2月前
|
人工智能 Ubuntu IDE
【Python】基础:环境配置与基础语法
本文介绍了Python编程语言及其环境配置方法。Python由Guido van Rossum于1991年创建,以其简洁、易学和强大的功能著称。文章详细讲解了Python的主要特点、Windows和Ubuntu下的安装配置步骤、基础语法、控制流、函数、文件操作、模块使用及面向对象编程等内容,帮助读者快速入门Python编程。
63 4
|
4月前
|
XML 前端开发 数据格式
三分钟搞定 Python XPath 语法
XPath(XML Path Language)是一种用于在 XML 文档中查找信息的语言。它基于树状结构的 XML 文档,可以通过路径表达式来选取节点或节点集。也常常用来解析 HTML。 如果你是一个前端,对用路径获取元素可能陌生又熟悉。陌生是很多的路径,熟悉的路径上又有熟悉的属性和方法。下面我们就来探究一下 XPath 的魅力。
|
18天前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
28天前
|
存储 Python Perl
python正则语法
本文介绍了正则表达式的基础知识及其在 Python 中的应用。首先解释了为什么要使用正则表达式,通过一个判断手机号的示例展示了正则表达式的简洁性。接着详细介绍了 `re` 模块的常用方法,如 `match()`、`search()`、`findall()`、`finditer()` 等,并讲解了正则表达式的基本语法,包括匹配单个字符、数字、锚字符和限定符等。最后,文章还探讨了正则表达式的高级特性,如分组、编译和贪婪与非贪婪模式。
21 2
|
2月前
|
存储 程序员 开发者
Python编程入门:从零开始掌握基础语法
【10月更文挑战第21天】本文将带你走进Python的世界,通过浅显易懂的语言和实例,让你快速了解并掌握Python的基础语法。无论你是编程新手还是想学习一门新的编程语言,这篇文章都将是你的不二之选。我们将一起探索变量、数据类型、运算符、控制结构、函数等基本概念,并通过实际代码示例加深理解。准备好了吗?让我们开始吧!
|
2月前
|
存储 C语言 索引
Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法
本文全面介绍了Python的基础知识,包括Python的诞生背景、为什么学习Python、Python的应用场景、Python环境的安装、Python的基础语法、数据类型、控制流、函数以及数据容器的使用方法,旨在为Python零基础读者提供一篇全面掌握Python语法的博客。
48 0
Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法
|
2月前
|
存储 数据可视化 数据处理
【Python篇】快速理解Python语法:全面指南
【Python篇】快速理解Python语法:全面指南
50 1
|
3月前
|
Java Linux C++
30天拿下Python之基础语法
30天拿下Python之基础语法
30 4
|
3月前
|
IDE Java 开发工具
Python的语法
Python的语法。
37 5
|
3月前
|
存储 数据挖掘 程序员
揭秘Python:掌握这些基本语法和数据类型,你将拥有编程世界的钥匙!
【9月更文挑战第3天】Python 是一种简洁强大的高级编程语言,其清晰的语法和丰富的功能深受程序员喜爱。本文从基本语法入手,介绍 Python 的代码结构特点,如通过缩进区分代码块,使逻辑更清晰。接着详细讲解主要数据类型:数值型、字符串、列表、元组、集合与字典,每个类型均附有示例代码,帮助初学者快速掌握 Python,为后续学习打下坚实基础。
46 2