首页 > 编程语言 >大爽Python入门教程 2-6 拓展练习

大爽Python入门教程 2-6 拓展练习

时间:2023-02-12 19:46:30浏览次数:60  
标签:circles index direction Python turns 大爽 入门教程 times east

大爽Python入门公开课教案 点击查看教程总目录

方位输出

第一章有一个思考题,方位变换:

小明同学站在平原上,面朝北方,向左转51次之后(每次只转90度),
小明面朝哪里?小明转过了多少圈?
(360度为一圈,圈数向下取整)

当时只是让大家思考这个怎么计算,但是没有要求输出。
因为用当时的知识实现输出,有点太麻烦了,好的实现方法基本都超纲了。
不过这一章学了列表,实现起来就比较容易了。

现在题目不变,希望按一下格式输出

Xiao Ming faces east, turns 12 circles.

实现方法

接下来我们思考比较下各种实现方法。

上北下南左西右东
余数和方位对应关系:
0: 北 north
1: 西 west
2: 南 south
3: 东 east

只用基础的判断

首先是只用第一章的知识,代码如下

times = 51
circles = times // 4
direction_index = times % 4
direction = ""

if direction_index == 0:
    direction = "north"
if direction_index == 1:
    direction = "west"
if direction_index == 2:
    direction = "south"
if direction_index == 3:
    direction = "east"

print('Xiao Ming faces %s, turns %s circles.'%(direction, circles))

其实上面可以用elifelse,但这个语法准确来讲是第三章介绍的。
所以这里暂时不使用。

使用字典(推荐)

转圈的余数direction_index和方位direction是一种对应的关系。
对应关系使用字典最适合。

代码如下

times = 51
circles = times // 4
direction_index = times % 4
directions = {
    0: "north",
    1: "west",
    2: "south",
    3: "east"
}

direction = directions[direction_index]
print('Xiao Ming faces %s, turns %s circles.'%(direction, circles))

还可以使用列表(恰巧)

这里恰巧,由于direction_index是整数,且从0开始,依次增1。
所以也可以使用列表存储方位,direction_index作为其索引。

代码如下

times = 51
circles = times // 4
direction_index = times % 4
directions = ["north", "west", "south", "east"]

direction = directions[direction_index]
print('Xiao Ming faces %s, turns %s circles.'%(direction, circles))

补充:如果方位是单个字符的话,比如中文的东西南北,这里也可以使用字符串作为容器。
因为字符串也是序列。

拓展练习

这里我们在原题的基础上做一点拓展。
五位同学A, B, C, D, E, 都面朝北方。
分别左转了51, 23, 67, 83, 77次后(每次只转90度),
这五位同学分别面朝哪里?分别转过了多少圈?

(360度为一圈,圈数向下取整)

每位同学仍按以下格式输出

Xiao Ming faces east, turns 12 circles.

这里推荐大家尝试自己写写代码。
下面的答案作为一个参考。

分界线

这里是没有实际意义的分界线
防止学生直接看到后面的答案,影响自己的思考。

拓展练习答案

正确答案

正确的输出如下

A faces east, turns 12 circles.
B faces east, turns 5 circles.
C faces east, turns 16 circles.
D faces east, turns 20 circles.
E faces west, turns 19 circles.

使用字典实现

times_dict = {
    "A": 51,
    "B": 23,
    "C": 67,
    "D": 83,
    "E": 77,
}

directions = {
    0: "north",
    1: "west",
    2: "south",
    3: "east",
}

for name in times_dict:
    times = times_dict[name]
    circles = times // 4
    direction_index = times % 4

    direction = directions[direction_index]
    print('%s faces %s, turns %s circles.'%(name, direction, circles))

使用列表实现

names = ["A", "B", "C", "D", "E"]
times_list = [51, 23, 67, 83, 77]

directions = ["north", "west", "south", "east"]

for i in range(len(names)):
    name = names[i]
    times = times_list[i]
    circles = times // 4
    direction_index = times % 4

    direction = directions[direction_index]
    print('%s faces %s, turns %s circles.'%(name, direction, circles))

标签:circles,index,direction,Python,turns,大爽,入门教程,times,east
From: https://www.cnblogs.com/BigShuang/p/17114530.html

相关文章

  • Python面向对象---类的基本使用
     ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。 ......
  • Python爬虫之Js逆向案例(16)-京东商品评论&店铺详情案例
    <center>声明:京东商品评论&店铺详情获取分析仅用于研究和学习,如有侵权,可联系删除</center>一次运行程序,同时获取一下内容:1.获取商店详情;2.获取当前商品评论;3.获取商品的......
  • Python 类型注解
    在Python语言发展的过程中,PEP提案发挥了巨大的作用,如PEP3107和PEP484提案,分别给我们带来了函数注解(FunctionAnnotations)和类型提示(TypeHints)的功能。PEP3107:定义了......
  • Python 高级编程之网络编程 Socket(六)
    目录一、概述二、Pythonsocket模块1)Socket类型1、创建TCPSocket2、创建UDPSocket2)Socket函数1、服务端socket函数2、客户端socket函数3、公共socket函数三、单工,半......
  • 学习python中的字符串操作
    字符串字符串的存储地址原理​ 在python中有一个字符串保留区,当中存放了声明的字符串,每一个字符串对应一个地址,变量名指向对应的地址,只要字符串相同,声明内容相同的字符......
  • python&&matlab
    绘制折线图importmatplotlib.pyplotaspltsplts.figure(figsize=[10,5],dpi=80)#绘制一周的天气的变化plts.plot([1,2,3,4,5,6,7],[12,14,8,7,3,19,4])plts.show()......
  • Python网络爬虫与数据挖掘——复习笔记
    目录\(\ttrequests\)库爬取页面\(\ttrequests\)库爬取搜索引擎\(\ttrequests\)库爬取网络图片\(\ttrequests\)库爬取页面importrequests#引入库url="...........
  • Python----基础知识测试
    一、单选题(每题2分)1、列标识符命名中,符合规范的是()A、1aB、forC、_123D、#_b2、下列标识符中,不是Python支持的数据类型的是()A、charB、intC、floatD、str3、下......
  • Python之装饰器
    1.装饰器的定义就是给已有函数增加额外功能的函数,它本质上就是一个闭包函数。装饰器的功能特点:不修改已有函数的源代码不修改已有函数的调用方式给已有函数增加额外的功能......
  • python 单例
      importthreadingclassThreadSafeSingleton(type):_instances={}_singleton_lock=threading.Lock()def__call__(cls,*args,**kwargs):......