CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。

CheckiO 官网:https://checkio.org/

我的 CheckiO 主页:https://py.checkio.org/user/TRHX/

CheckiO 题解系列专栏:https://itrhx.blog.csdn.net/category_9536424.html

CheckiO 所有题解源代码:https://github.com/TRHX/Python-CheckiO-Exercise


题目描述

【Sun Angle】:您的任务是在知道一天中的时间的情况下找到太阳在地平线上方的角度。例如:太阳在 6:00 AM 在东方升起,对应于0°角。在 12:00 PM,太阳到达顶点,这意味着该角度等于90°,6:00 PM 是日落时间,因此角度为180°,如果时间是夜晚时间(上午6:00之前或下午6:00之后),则您的函数应返回“I don’t see the sun!”。


【链接】:https://py.checkio.org/mission/sun-angle/

【输入】:一天中的时间

【输出】:太阳的角度,四舍五入到小数点后两位

【前提】:00:00 <= time <= 23:59

【范例】

sun_angle("07:00") == 15
sun_angle("12:15"] == 93.75
sun_angle("01:23") == "I don't see the sun!"

解题思路

将输入的时间字符串进行分割,分为小时和分钟两部分

分析时针,06:00 对应 07:00 对应 15°18:00 对应 180°,也就是每增加 1 个小时,度数就增加 15°

分析分针,60 分钟等于 1 小时,分针转 1 圈(360°)时针转 1/24 圈(15°),那么 1 分钟,时针转 0.25°

如果是整点,那么只需要计算有多少个 15° 就行了

如果不是整点,除了要计算有多少个 15° ,还需要计算有多少个 0.25°,最后两者相加

注意时钟要大于等于 6 并且小于 18,此外,还有特殊的 18 点整等于 180°

代码实现

def sun_angle(time):time = time.split(':')if int(time[0]) == 18 and int(time[1]) == 0:return int(180)elif 6 <= int(time[0]) < 18:if int(time[1]) > 0:return (int(time[0])-6)*15 + int(time[1])*0.25else:return (int(time[0])-6)*15else:return "I don't see the sun!"if __name__ == '__main__':print("Example:")print(sun_angle("07:00"))# These "asserts" using only for self-checking and not necessary for auto-testingassert sun_angle("07:00") == 15assert sun_angle("01:23") == "I don't see the sun!"print("Coding complete? Click 'Check' to earn cool rewards!")

大神解答

大神解答 NO.1

def sun_angle(time):h, m = list(map(int, time.split(':')))angle = 15 * h + m / 4 - 90return angle if 0 <= angle <= 180 else "I don't see the sun!"

看了大神的代码才知道自己写的代码有多菜!如此简洁明了,完全不用我那么复杂!

大神解答 NO.2

def sun_angle(time):t = int(time[:2]) * 15 + int(time[3:]) / 4 - 90return t if 0 <= t <= 180 else "I don't see the sun!"

大神解答 NO.3

from datetime import datetime
from scipy.interpolate import interp1dsolutions = {'06:00': 0, '12:00': 90, '18:00': 180}
stamp = lambda time: datetime.strptime(time, '%H:%M').timestamp()
line = interp1d([*map(stamp, solutions)], [*solutions.values()])def sun_angle(time):try: return line(stamp(time))[()]except ValueError: return "I don't see the sun!"

【Python CheckiO 题解】Sun Angle相关推荐

  1. Python CheckiO 题解系列 丨 博客目录索引

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本题解系列主要记录自己在用 Python 闯关时的做 ...

  2. 【Python CheckiO 题解】Army Battles

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  3. 【Python CheckiO 题解】Date and Time Converter

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  4. 【Python CheckiO 题解】Largest Rectangle in a Histogram

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  5. 【Python CheckiO 题解】Roman Numerals

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  6. 【Python CheckiO 题解】Probably Dice

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  7. 【Python CheckiO 题解】Multicolored Lamp

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  8. 【Python CheckiO 题解】Time Converter (12h to 24h)

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  9. 【Python CheckiO 题解】Speech Module

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

最新文章

  1. mvc模型中MySQL类_Mvc5 EF6 CodeFirst Mysql (二) 修改数据模型
  2. Nacos真香,从零到一学起来
  3. 网络推广下叮咚买菜已完成D轮融资,生鲜电商下一次融资又在何方?
  4. 为什么要叫python-为什么我要学习python?
  5. 说说浏览器的沙箱机制
  6. 不得不学的http协议
  7. 框架源码专题:Spring是如何集成Mybatis的?Spring怎么管理Mapper接口的动态代理
  8. 基础学习day03---程序结构与控制、函数与数组入门
  9. Python基础语法-05-装饰器
  10. 极客大学产品经理训练营 产品经理新人如何落地 第0课总结
  11. 【推荐】智慧城市建设及发展资料合集
  12. WIN10 vmware开启虚拟机蓝屏
  13. QT---创建桌面快捷方式
  14. C语言求解一元二次方程
  15. 苹果原壁纸高清_ios14.2壁纸原图高清分享:苹果ios14.2壁纸高清无水印[多图]
  16. python学习需要多久?三个月够吗?
  17. 读取配置文件godotenv
  18. Theory for the information-based decomposition of stock price
  19. excel表格计算机二级销售,计算机二级excel真题:制作产品销售情况表
  20. 百度网盘批量重命名工具怎么用,百度网盘怎么批量修改文件名

热门文章

  1. ubuntu - 如何以root身份使用图形界面管理文件?
  2. 简单的实现RAII封装。
  3. 15. 3Sum-数组
  4. Depth-first Search深度优先搜索专题6
  5. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第2篇]多核处理器和向量处理器的区别
  6. python语言key_Python语言学习:字典常用的方法
  7. mysql 5.7.21-linux_MySQL 5.7.21 Linux平台安装 Part 2
  8. stunnel使用详解
  9. python源码剖析_Python源码剖析 - 对象初探
  10. python支持gui编程_Python GUI编程完整示例