大爽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))

大爽Python入门教程 2-4 练习的更多相关文章

  1. 大爽Python入门教程 3-3 循环:`for`、`while`

    大爽Python入门公开课教案 点击查看教程总目录 for循环 可迭代对象iterable 不同于其他语言. python的for循环只能用于遍历 可迭代对象iterable 的项. 即只支持以下语法 ...

  2. 大爽Python入门教程 3-4 实践例题

    大爽Python入门公开课教案 点击查看教程总目录 1. 求和 使用循环,计算列表所有项的和,并输出这个和. 列表示例 lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, 11 ...

  3. 大爽Python入门教程 3-5 习题

    大爽Python入门公开课教案 点击查看教程总目录 1 求平方和 使用循环,计算列表所有项的平方和,并输出这个和. 列表示例 lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, ...

  4. 大爽Python入门教程 3-6 答案

    大爽Python入门公开课教案 点击查看教程总目录 1 求平方和 使用循环,计算列表所有项的平方和,并输出这个和. 列表示例 lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, ...

  5. 大爽Python入门教程 2-5 *拓展实践,对比与思考

    大爽Python入门公开课教案 点击查看教程总目录 本文偏难. 推荐等第一二三四章上完后,回过来拓展阅读. 基础情景思考 假设有这样一张成绩表 最左边的一列是名字,起名麻烦. 这里直接用ABC...来 ...

  6. 大爽Python入门教程 3-1 布尔值: True, False

    大爽Python入门公开课教案 点击查看教程总目录 1 布尔值介绍 从判断说起 回顾第一章介绍的简单的判断 >>> x = 10 >>> if x > 5: ...

  7. 大爽Python入门教程 3-2 条件判断: if...elif..else

    大爽Python入门公开课教案 点击查看教程总目录 简单回顾if 回顾下第一章的代码 >>> x = 5 >>> if x > 0: ... print(&q ...

  8. 大爽Python入门教程 2-2 序列: 字符串、元组与列表

    大爽Python入门公开课教案 点击查看教程总目录 序列 序列(sequence): 顾名思义,有序的排列. 有序排列的一串数据. 一种容器,容器内成员有序排列. python的字符串str,元组tu ...

  9. 大爽Python入门教程 2-3 字符串,列表,字典

    大爽Python入门公开课教案 点击查看教程总目录 除了通用的序列方法, 列表和字符串还有些自己的专属方法. 后面介绍有些是英中文对照介绍(英文来自官方文档), 便于大家更深入的去理解其意思. 灵活的 ...

随机推荐

  1. 使用VUE+原生PHP完成搜索后分页的效果

    html代码: <!doctype html> <html lang="en"> <head> <meta charset="U ...

  2. 深度学习--GAN学习笔记

    生成模型 WGAN Blog GAN 推荐学习网站 生成模型 什么是生成模型? GMM: 用来做聚类,(非监督学习) NB(朴素贝叶斯):(监督学习,可以用来做垃圾邮件分类) Logistics 回归 ...

  3. 【深度学习】softmax回归——原理、one-hot编码、结构和运算、交叉熵损失

    1. softmax回归是分类问题 回归(Regression)是用于预测某个值为"多少"的问题,如房屋的价格.患者住院的天数等. 分类(Classification)不是问&qu ...

  4. Python:安装opencv出现错误Could not find a version that satisfies the requirement numpy==1.13.3 (from versions: 1.14.5, 1.14.6, 1.15.0rc2, 1.15.0, 1.15.1, 1.15.2, 1.15.3, 1.15.4, 1.16.0rc1, 1.16.0rc2,

    安装opencv的时候,出现numpy的版本不匹配,卸载了不匹配的版本,重新安装却是一点用都没有,后面尝试了一下这里的提示pip更新,居然安装成功了,看来pip的版本过低真是误事啊. 报错是: Cou ...

  5. Java AES 加密小试牛刀

    目录 问题出处 解决方法 方法一 方法二 方法三 补充 总结 在java开发过程中,很多时候我们都需要加密数据,例如声音.敏感信息等.我们通常使用的是 MD5加密.SHA加密.DES 加密.AES 加 ...

  6. C语言日记② 初识 C的内存

    第一节: 上一个笔记 有趣的恶搞小程序 定时关机 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <str ...

  7. 模拟赛T2 交换 解题报告

    模拟赛T2 交换 解题报告 题目大意: 给定一个序列和若干个区间,每次从区间中选择两个数修改使字典序最小. \(n,m\) 同阶 \(10^6\) 2.1 算法 1 按照题意模拟,枚举交换位置并比较. ...

  8. kettle使用

    Kettle的安装及简单使用 目录 Kettle的安装及简单使用 一.kettle概述 二.kettle安装部署和使用 Windows下安装 案例1:MySQL to MySQL 案例2:使用作业执行 ...

  9. 【Spring】IoC容器 - 依赖注入

    前言 上一篇文章已经学习了[依赖查找]相关的知识,这里详细的介绍一下[依赖注入]. 依赖注入 - 分类 因为自己是基于小马哥的脉络来学习,并且很认可小马哥梳理的分类方式,下面按照小马哥思想为[依赖注入 ...

  10. 跟着老猫一起来学GO,环境搭建

    老猫的GO学习系列博客已经正式发车了,相信大家以前学习一门编程语言的时候也有经验,咱们一般都是从环境开始,在此呢,大家也跟着老猫从最开始的搭建环境开始. GO语言的安装 首先呢,我们开始需要下载GO语 ...