首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中使用with时检查错误

在python中使用with时检查错误
EN

Stack Overflow用户
提问于 2019-03-11 05:55:35
回答 4查看 69关注 0票数 1
代码语言:javascript
复制
while True:
    self.soil_type = input("Please choose soil type - alkaline, neutral, acidic: ")
    print('-'*30)
    print('')
    if self.soil_type != "alkaline" and "neutral" and "acidic":
        print("***NOT A VALID SOIL TYPE***")
        continue
    else:
        False

我想用while循环检查错误。如果我键入的不是碱性的,中性的,酸性的,打印“非有效土壤类型”并继续输入命令。如果我键入正确的土壤类型之一,逃离循环并进入下一步。

但没起作用。即使我键入正确的(例如“酸性”),它也显示“不是有效的土壤类型”。我遗漏了什么?)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-03-11 06:00:33

代码语言:javascript
复制
while True:
    self.soil_type = input("Please choose soil type - alkaline, neutral, acidic: ")
    print('-'*30)
    print('')
    if not(self.soil_type == "alkaline" or self.soil_type == "neutral" or self.soil_type == "acidic"):
        print("***NOT A VALID SOIL TYPE***")
        continue
    else:
        break

尝试使用this.....it应该有效!

票数 2
EN

Stack Overflow用户

发布于 2019-03-11 06:00:28

如果条件错误,则使用错误。

应该是-

代码语言:javascript
复制
while True:
    self.soil_type = input("Please choose soil type - alkaline, neutral, acidic: ")
    print('-'*30)
    print('')
    if (self.soil_type != "alkaline") and (self.soil_type != "neutral") and (self.soil_type != "acidic"):
        print("***NOT A VALID SOIL TYPE***")
        continue
    else:
        False

因为你把它说成是-

代码语言:javascript
复制
if <condition> and "neutral" and "acidic":
     ...

因为“中性”和“酸性”只是真值,如果不是碱性的话,第一个条件就是真的。这使得整个情况成为现实,而且它只是打印-

代码语言:javascript
复制
***NOT A VALID SOIL TYPE***

希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2019-03-11 06:01:48

如果您检查if not something,而不是检查if something,您的代码将更具可读性。

代码语言:javascript
复制
while True:
    self.soil_type = input("Please choose soil type - alkaline, neutral, acidic: ")
    print('-'*30)
    print('')
    if self.soil_type == "alkaline" or self.soil_type == "neutral" or self.soil_type == "acidic":
      print("**VALID**")
      print self.soil_type
      break
    else:
      print("***NOT A VALID SOIL TYPE***")

提醒(布尔代数):

这些规则可以用英文表达如下:

  • 分离的否定是否定与否定的结合;
  • 否定连词是指否定的分离;或
  • 两个集合的并的补语与它们的补语的相交相同;以及
  • 这两个集合的相交的补语与它们的补语的求和是相同的。

不(A或B) =不A和B;也不(A和B) =非A或非B

laws

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55095945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档