【问题标题】:Creating A Class/Def For A If Else Statement Python为 If Else 语句 Python 创建一个 Class/Def
【发布时间】:2016-12-11 16:53:57
【问题描述】:

所以我正在制作一个简单的 Python 程序来问数学问题。它目前正在完全工作,但我想尝试压缩代码。用户有 6 个菜单项可供选择,每一个都是加法、减法、乘法......每个最后都有以下代码来检查用户是否要继续或尝试不同的菜单项。

contC = input()
        if contC == "Y" or contC == "y":
            cont = True

        elif contC == "N" or contC =="n":
            cont = False

这段代码出现在每个菜单选项中,我想创建一个可以用于所有选项的方法,一个类还是一个定义?我尝试了不同的事情,但似乎无法得到任何工作。

【问题讨论】:

  • 用您尝试过的内容以及失败的原因更新您的帖子。在您编辑时,从标题中删除标签“Python”,并去掉大写字母。不要以“so”开头的句子

标签: python function class if-statement methods


【解决方案1】:

尝试使用:

def AskMethod(Operation):
   while True:
       print("Do you want to do " + Operation.name)
       Answer = input()
       if Answer.lower() in 'yes':
           Operation.use()  # Or return Operation. However you do it
           return False
       elif Answer.lower() in 'no':
           return True
       else:
           print("Please choose yes or no.")

for i in Ops:
    Continue = Ask(i)
    if Continue == False:
        break

要使用它,您需要创建一个操作类和一个包含所有您想要的操作的ops 数组。您还必须添加self.nameself.use。希望我能帮上忙。

【讨论】:

  • 永远不要使用== 测试是否等于False。您应该始终使用is:即Continue is False:。你在哪里定义函数Ask()
  • 如果你在输入中输入'o',你AskMethod()将返回True,类似地如果你输入es它会返回False。跨度>
  • @Anthon 为什么他们应该对布尔值使用身份测试?这里更正确的答案是if not Continue: ...
  • @MosesKoledoye 为什么不呢?只有一个对象False。而且一般if not Continue:if Continue is False: 不一样。由于我们不知道 Continue 可以有哪些值,因为 Ask() 没有定义,所以您不能替换它并确保您不更改所采用的逻辑/执行路径(例如,Ask() 可能返回 [] 空列表)
  • @Anthon 如果知道Continue 是一个布尔值,那么is== 大致相同,但是您甚至不需要两者中的任何一个。当对象Continue 本身已经是一个布尔值时,为什么还要用Continue is False 创建另一个布尔值。
【解决方案2】:

只做一个方法

def should_continue(user_input):
    if user_input in ('y', 'Y'):
        return True
    if user_input in ('n', 'N'):
        return False
   raise ValueError("please enter y/n")

然后只是

user_text = input()
cont = should_continue(user_input)

【讨论】:

  • 那不是方法,那是函数。
  • continue 是保留关键字。您不能将其用于函数名称
猜你喜欢
  • 2019-04-09
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-29
相关资源
最近更新 更多