python - 使用 if 语句的最佳替代方法?
问题描述
我正在努力改掉过于频繁地使用 if/else 的坏习惯。我对函数的工作方式和调用它们的正确方法不熟悉,但我一直在研究用我的代码实现它们的正确方法。我正在制作的代码是假设检查 3 个不同的单词,如果该单词不在输入中,那么用户将收到一条语句,上面写着“rejected”,如果这个词是正确的,它会说“accepted”。我面临的问题是让我的程序正常工作。到目前为止,我已经设置了我的程序来检查单词的每个索引,如果它与完整的单词匹配,它将被标记为已接受。我试图找出添加拒绝标志的正确方法,并避免在运行该程序后收到错误。
def checker():
q0 = input("enter word:")
if (q0[0]) +(q0[1]) == "if":
print ("accepted")
if (q0[0]) + (q0[1]) + (q0[2]) + q0[3] == "else":
print("accepted")
if(q0[0]) + (q0[1]) == "do":
print("accepted")
else:
print("rejected")
checker()
对于这个程序,我不会使用字典,所以我可以正确地挑战自己并以自动机的方式实现它。如何在不出现字符串索引超出范围错误的情况下实现此代码。我试图在我的 print 语句之后加上 break,但它不起作用。
在此先感谢大家。这是我的第一篇文章,所以如果我在我的帖子中犯了任何错误,请告诉我!
解决方案
这是一个可扩展的单线:
def check():
q = input().strip()
acceptable = {'if', 'else', 'do'}
print('accepted' if q in acceptable else 'rejected')
变量acceptable
是set
; 一种数据结构,可以非常快速地检查其中是否有东西。您可以修改此集合(或将其check
作为参数传递!)以更改可接受单词的范围而不更改程序的控制流(就像您在原始的 if/else 实现中所做的那样,您值得称赞的是要移开从)。
编辑:我想这不是严格意义上的“单线”......
推荐阅读
- angular - 如何使用 Angular 创建白标
- python - 具有 postgresql 错误值的 django 应用程序对于类型字符变化而言太长(1)
- android - Cloud 函数与 Firebase 安全规则
- sql - 从一个表中获取行,并从相关表中获取 COUNT
- python - 在两个字典之间的 python 列表中添加值
- c# - 禁用轻量级 Windows 服务器上的按需 ngen.exe(“.NET Framework NGEN v4.0.30319 64”)
- docker - Dockerfile 捕获命令的输出
- c++ - 指向 C++ 中类的指针的 PIMPL 习语
- node.js - 是否可以在 ldap 中添加分页获取所有成员查询?
- stream - 找出字节内容