【问题标题】:Functions and if - else in python. Mutliple conditions. Codeacademypython中的函数和if - else。多个条件。码学院
【发布时间】:2013-02-15 11:28:30
【问题描述】:

编写一个函数shut_down,它接受一个参数(你可以使用任何你喜欢的东西;在这种情况下,我们将使用s 作为字符串)。

shut_down 函数在获得"Yes""yes""YES" 作为参数时应返回"Shutting down...",并在获得"No""no""NO" 时返回"Shutdown aborted!"。 如果它得到的不是这些输入,函数应该返回"Sorry, I didn't understand you."

到目前为止我写的代码如下。它会出错,例如给定"No" 作为参数,它不会按预期返回"Shutdown aborted!"

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

【问题讨论】:

  • 欢迎来到 StackOverflow!该站点的使用方式与您以前使用的其他论坛不同。这是一个问题和-答案网站。你问一个问题,其他读物提供答案。你有问题要问吗?
  • 供将来参考,如果您希望程序实际关闭 Windows 计算机,您可以使用 `subprocess.call(["shutdown","-s"]) 了解更多信息,请查看 @987654321 @
  • 先生,能否请您抽出一点宝贵的时间来接受考虑答案,并说出您对降低字母 .lower() 的想法的看法,先生正如您的仆人 GordonBeard 所说,他和我和其他有幸回答您的问题的人一样,将他不重要的时间用于让您的学校任务轻松完成。哦,请。 - 顺便说一句,像你这样问第一个问题是一种粗鲁的模式:不仅不说称呼,而且以命令的方式表达“写一个函数,....”

标签: python function


【解决方案1】:

这个:

s == "Yes" or "yes" or "YES"

等价于:

(s == "Yes") or ("yes") or ("YES")

这将始终返回True,因为非空字符串是True

相反,您希望将s 与每个字符串单独进行比较,如下所示:

(s == "Yes") or (s == "yes") or (s == "YES")  # brackets just for clarification

应该是这样的:

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":
        return "Shutdown aborted!"
    else:
        return "Sorry, I didn't understand you."

【讨论】:

    【解决方案2】:

    您可以通过以下几种方式做到这一点:

    if s == 'Yes' or s == 'yes' or s == 'YES':
        return "Shutting down..."
    

    或者:

    if s in ['Yes', 'yes', 'YES']:
        return "Shutting down..."
    

    【讨论】:

    • if s.upper() =="YES" 捕获更多案例(您可能想要也可能不想要,例如“yEs”)。
    • 他或她使用s.lower()不是更容易吗?懒惰,我讨厌写太多:)
    • 否,因为这会将yEsyes 进行比较,这是不正确的。
    【解决方案3】:

    欢迎来到 SO。我将一步一步地完成答案。

    s = raw_input ("Would you like to shut down?")
    

    这会询问用户是否要关闭。

    def shut_down(s):
        if s.lower() == "yes":
            print "Shutting down..."
        elif s.lower() == "no":
            print "Shutdown aborted!"
        else:
            print "Sorry, I didn't understand you."
    

    这对你来说可能是新的。如果你有一个字符串,然后.lower() 它将所有输入从s 更改为小写。这比列出所有可能性要简单。

    shut_down(s)
    

    这会调用函数。

    【讨论】:

    • 应该是s.lower(),而不是"yes".lower()
    【解决方案4】:
    def shut_down(s):
        return ("Shutting down..." if s in("Yes","yes","YES")
                else "Shutdown aborted!" if s in ("No","no","NO")
                else "Sorry, I didn't understand you.")
    

    GordonsBeard 的想法不错。可能“yEs”和“yES”等是可接受的标准;
    那么我在这种情况下建议:

    def shut_down(s,d = {'yes':"Shutting down...",'no':"Shutdown aborted!"}):
        return d.get(s.lower(),"Sorry, I didn't understand you.")
    

    【讨论】:

      【解决方案5】:

      我知道这并不完全符合规范,但这是另一个常见的选项,可以捕捉更多的排列:

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

      【讨论】:

        【解决方案6】:

        我是一名 Python 程序员,已完成 Codecademy。我看到你有问题,让我给你我的答案。完美运行

        def shut_down(s):
            if s == "yes":
                return "Shutting down"
            elif s == "no":
                return "Shutdown aborted"
            else:
                return "Sorry"
        

        【讨论】:

          【解决方案7】:

          你可以试试这个代码:

          def shut_down(s):
          
          if s =="yes":
              return "Shutting Down"
          
          elif s =="no":
              return "Shutdown aborted"
          else:
              return "Sorry"
          print shut_down("yes")   
          

          【讨论】:

            【解决方案8】:

            此处发布的用户“grc”的代码几乎对我有用。我不得不调整返回消息以使其正确。 如果消息(意味着所有返回的字符串)与 Codecademy 中描述的不完全相同,那么工作区将不会验证您的响应。

            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":
                return "Shutdown aborted"
            else:
                return "Sorry"
            

            【讨论】:

              【解决方案9】:
              def shut_down(phrase):
                  word = phrase
                  return word
              
              take_action = input(shut_down('do you want to shutdown the program?: '.title()))
              if take_action.lower() == 'yes':
                  print('Shutting down...')
              elif take_action.lower() == 'no':
                  print('Shutdown aborted!')
              else:
                  print('Sorry, I didn\'t understand you.')
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2020-10-17
                • 1970-01-01
                • 2019-01-15
                • 1970-01-01
                • 2016-08-05
                • 1970-01-01
                相关资源
                最近更新 更多