python - "think python 3"书中day_num问题的解决方案

标签 python python-3.x

《如何像计算机一样思考》一书第4.17节有练习 科学家:用 Python 学习 3》第 3 版

“编写一个函数 day_name,将整数 0 到 6 转换为日期的名称。假设第 0 天是“星期日”。如果函数的参数无效,则再次返回 None。”

我编写了以下代码,它解决了大部分问题,但我无法理解如何为无效参数返回“None”。请帮忙...

def day_name(x):
    days=["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
    return days[x]

print(day_name(5))

如果我print(day_name(7)),它返回python错误而不是“None”

最佳答案

向您的函数添加验证。您可以明确地执行此操作:

if x in range(7):
    return days[x]
else:
    return None

这就是所谓的三思而后行:在尝试选择days[x]之前先检查它是否存在。

或者您可以让选择失败并捕获错误:

try:
    return days[x]
except IndexError:
    return None

关于python - "think python 3"书中day_num问题的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54630330/

相关文章:

python - 将 Mx1 大小的数据框添加到 Pandas 中的 MxN 大小的数据框

python-3.x - 如何使用 pyenv 安装 python 3.7.0?

python-3.x - 我如何接受字典/对象作为 Graphite 烯(GraphQL)突变的输入?

Python解码JSON

Python C 扩展 : return PyFloat_FromDouble(double) segfault

python - 如何使用 python 写入 ISO?

python - 如何使评论中标记的用户成为该用户主页的超链接? ( Django )

python - 第一次识别输入错误,第二次开始运行

python - 为什么即使没有引用大对象,Python 2 也会消耗大量内存?

Python:多次创建一个小列表有多昂贵?