当前位置: 首页 > 面试题库 >

Python测试字符串是否为一组特定值之一

金子轩
2023-03-14
问题内容

我正在codecademy上学习python,我目前的任务是:

编写一个带有一个参数的函数shut_down(您可以使用任何您喜欢的东西;在这种情况下,我们将s用于字符串)。当它的参数为 “是”*
“是”“是” 并且 “关闭中止!” 时,shut_down函数应返回 “正在关闭…” 当它得到
“ No”“ no”“ NO”时

*

如果得到的不是这些输入,该函数应返回 “对不起,我听不懂”。

在我看来似乎很轻松,但是我仍然无法做到。

我为测试功能编写的代码:

def shut_down(s):
    if s == "Yes" or s == "yes" or s == "YES":
        return "Shutting down..."
    elif s == "No" or "no" or "NO":
        return "Shutdown aborted!"
    else:
        return "Sorry, I didn't understand you."

i = input("Do you want to shutdown?")
print(i) #was to test the input
print(shut_down(i)) #never returns "Sorry, I didn't understand you"

它适用于“否”和“是”,但是以某种方式,如果我在任何“是”之前放一个空格,或者即使我只是键入“ a”,它也会显示“关闭中止!”
尽管它应该显示“对不起,我听不懂”。

我究竟做错了什么?


问题答案:

你忘了写s == "no"你的第一本elif:

def shut_down(s):
    if s == "Yes" or s == "yes" or s == "YES":
        return "Shutting down..."
    elif s == "No" or "no" or "NO":             # you forgot the s== in this line
        return "Shutdown aborted!" 
    else:
        return "Sorry, I didn't understand you."

做这个:

def shut_down(s):
    if s == "Yes" or s == "yes" or s == "YES":
        return "Shutting down..."
    elif s == "No" or s == "no" or s == "NO":       # fixed it 
        return "Shutdown aborted!"
    else:
        return "Sorry, I didn't understand you."

这是因为:

elif s == "No" or "no" or "NO":  #<---this
elif s == "No" or True or True:  #<---is the same as this

由于这是公认的答案,因此我将详细介绍标准做法:不考虑大小写而比较字符串的约定(equalsIgnoreCase)的用法.lower()如下:

elif s.lower() == "no":


 类似资料:
  • 问题内容: 我有一个简单的AJAX调用,服务器将返回包含有用数据的JSON字符串或PHP函数产生的错误消息字符串。如何测试此数据是JSON字符串还是错误消息。 最好使用一个称为的函数,就像您可以使用该函数来测试某个东西是否为数组一样。 这就是我要的: 问题答案: 使用JSON.parse

  • 问题内容: 有没有这将是一个组合的等同的任何功能和? 例如,假设我有系列 ,并且我想找到s包含的任何一个的所有地方,那么我想得到除“宠物”以外的所有东西。 我有一个解决方案,但这很不雅致: 有一个更好的方法吗? 问题答案: 一种选择是仅使用正则表达式|字符尝试匹配系列中单词中的每个子字符串s(仍使用)。 你可以通过将单词与结合在一起来构造正则表达式|: 就像在下面的注释中指出的那样,请注意你的子字

  • 如何以更简单的方式检查字符串是否与给定选项之一匹配?

  • 问题内容: 我有两个字符串,我想检查第一个是否是另一个的子字符串。Python是否具有这样的内置功能? 问题答案: 尝试像这样使用:

  • 问题内容: 如何测试字符串以查看其是否包含数组中的任何字符串? 而不是使用 问题答案: 编辑:这是使用Java 8流API的更新。如此清洁。仍然可以与正则表达式结合使用。 另外,如果我们将输入类型更改为List而不是数组,则可以使用。 如果希望返回匹配的字符串,也可以使用。 原始的过时的答案: 这是(VERY BASIC)静态方法。请注意,在比较字符串上区分大小写。一个原始的,使其不区分大小写的办

  • 想知道什么在什么不在吗?Puppet 的 in 可以帮你, 如下面的表达式: if "foo" in $bar 如果 foo 是 $bar 的子串,表达式的值为 true。 如果 $bar 是个数组,并且 foo 是这个数组中的一个元素,表达式的值为 true。 如果 $bar 是一个哈希,foo 是 $bar 的一个键值,表达式的值为 true。 操作步骤 在你的配置清单中添加如下代码: if