大爽Python入门教程 2-4 练习
大爽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))
其实上面可以用
elif和else,但这个语法准确来讲是第三章介绍的。
所以这里暂时不使用。
使用字典(推荐)
转圈的余数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 练习的更多相关文章
- 大爽Python入门教程 3-3 循环:`for`、`while`
大爽Python入门公开课教案 点击查看教程总目录 for循环 可迭代对象iterable 不同于其他语言. python的for循环只能用于遍历 可迭代对象iterable 的项. 即只支持以下语法 ...
- 大爽Python入门教程 3-4 实践例题
大爽Python入门公开课教案 点击查看教程总目录 1. 求和 使用循环,计算列表所有项的和,并输出这个和. 列表示例 lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, 11 ...
- 大爽Python入门教程 3-5 习题
大爽Python入门公开课教案 点击查看教程总目录 1 求平方和 使用循环,计算列表所有项的平方和,并输出这个和. 列表示例 lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, ...
- 大爽Python入门教程 3-6 答案
大爽Python入门公开课教案 点击查看教程总目录 1 求平方和 使用循环,计算列表所有项的平方和,并输出这个和. 列表示例 lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, ...
- 大爽Python入门教程 2-5 *拓展实践,对比与思考
大爽Python入门公开课教案 点击查看教程总目录 本文偏难. 推荐等第一二三四章上完后,回过来拓展阅读. 基础情景思考 假设有这样一张成绩表 最左边的一列是名字,起名麻烦. 这里直接用ABC...来 ...
- 大爽Python入门教程 3-1 布尔值: True, False
大爽Python入门公开课教案 点击查看教程总目录 1 布尔值介绍 从判断说起 回顾第一章介绍的简单的判断 >>> x = 10 >>> if x > 5: ...
- 大爽Python入门教程 3-2 条件判断: if...elif..else
大爽Python入门公开课教案 点击查看教程总目录 简单回顾if 回顾下第一章的代码 >>> x = 5 >>> if x > 0: ... print(&q ...
- 大爽Python入门教程 2-2 序列: 字符串、元组与列表
大爽Python入门公开课教案 点击查看教程总目录 序列 序列(sequence): 顾名思义,有序的排列. 有序排列的一串数据. 一种容器,容器内成员有序排列. python的字符串str,元组tu ...
- 大爽Python入门教程 2-3 字符串,列表,字典
大爽Python入门公开课教案 点击查看教程总目录 除了通用的序列方法, 列表和字符串还有些自己的专属方法. 后面介绍有些是英中文对照介绍(英文来自官方文档), 便于大家更深入的去理解其意思. 灵活的 ...
随机推荐
- 1.JDBC编程六步走以及实现案例
1.注册驱动:通知Java程序我们要连接的是哪个品牌的数据库 2.获取数据库连接:Java进程和Mysql进程之间的通道开启了 3.获取数据库操作对象:这个对象是用来执行sql语句的 4.执行SQL语 ...
- bzoj3262陌上花开 (CDQ,BIT)
题目大意 给定n朵花,每个花有三个属性,定义\(f[i]\)为满足\(a_j \le a_i\)且\(b_j \le b_i\)且\(c_j \le c_i\)的j的数量, 求\(d \in [0,n ...
- 项目问题记录------Mabatis动态sql语句
现在在做一个模糊查询功能,使用两个查询条件: 条件1:下拉框选择的产品名 条件2:输入框输入的用户名 需求1:下拉框的选项是从数据库里导出来的产品名,此外,添加一个选项"全部产品" ...
- PTA实验11-1-7 藏头诗 (15分)
实验11-1-7 藏头诗 (15分) 本题要求编写一个解密藏头诗的程序. 输入格式: 输入为一首中文藏头诗,一共四句,每句一行.注意:一个汉字占两个字节. 输出格式: 取出每句的第一个汉字并连接在一起 ...
- Windows内核开发-9-32位和64位的区别
Windows内核开发-9-32位和64位的区别 32位的应用程序可以完美再64位的电脑上运行,而32位的内核驱动无法再64位的电脑上运行,或者64位的驱动无法在32位的应用程序上运行.这是为什么呢. ...
- 并发编程从零开始(十一)-Atomic类
并发编程从零开始(十一)-Atomic类 7 Atomic类 7.1 AtomicInteger和AtomicLong 如下面代码所示,对于一个整数的加减操作,要保证线程安全,需要加锁,也就是加syn ...
- SQLServer聚集索引导致的插入性能低
1,新表默认会在主键上建立聚集索引.对于非专业DBA, 默认配置在大多数情况下够用. 2,当初为了优化查询速度. 把聚集索引建立在非自增主键的唯一索引列. 数据量上千万后,插入性能开始显现不足. 随着 ...
- jquery正则表达式验证【是否带有小数、是否中文名称组成、是否全由8位数字组成、电话码格式、邮件地址】
1 <form name="myform" action="" onsubmit="return fun1()"> 2 < ...
- python mysqlclient安装失败 Command "python setup.py egg_info" failed with error code 1
python2 python3 中代码 pip install mysqlclient 都安装失败的话, 很有可能是你的操作系统中没有安装mysql 如果确定已经安装了,请忽略下面的内容. Ubunt ...
- 链表中倒数第K个结点 牛客网 剑指Offer
链表中倒数第K个结点 牛客网 剑指Offer 题目描述 输入一个链表,输出该链表中倒数第k个结点. # class ListNode: # def __init__(self, x): # self. ...