【问题标题】:Python while not True or FalsePython 而不是 True 或 False
【发布时间】:2017-08-05 00:12:40
【问题描述】:

如果提供的值不是“是”或“否”,是否可以使用 while 循环继续询问输入值?例如

someVar = None

while someVar is not (True or False):

  someVar = str.lower(input())

  if someVar == 'yes':
      someVar = True

  elif someVar== 'no':
      someVar = False

【问题讨论】:

  • True or FalseTrueor 就是这样工作的)。您需要将其与每个值进行比较。
  • 啊当然,我不知道我怎么没注意到。谢谢:)

标签: python python-3.x


【解决方案1】:

是的!

一旦条件满足,使用break:

while True:
    someVar = str.lower(input())

    if someVar == 'yes':
        someVar = True
        break
    if someVar == 'no':
        someVar = False
        break

您也可以将while False 用于:

met = True

while met:

   someVar = str.lower(input())

   if someVar == 'yes':
        someVar = True
        break
    if someVar == 'no':
        someVar = False
        break

由于所有字符串都是True,因此使用另一个变量来存储TrueFalse。一旦metfalse,那么循环就会中断。

【讨论】:

  • 但是我需要将 someVar 设置为 true 或 false,所以我会在 someVar = True 行之后添加 break 吗?
  • @AshleyB 你真的不需要那个,因为你有break,你的输入就会消失
  • 我需要 someVar 来保存响应值,例如,如果问题是“你喜欢 Python 吗?”,那么如果他们输入“是”,那么 someVar 将是 True 等等。这有意义吗?
  • @AshleyB 然后使用另一个变量为TrueFalse。此外,如果 someVar 包含 any 字符串,则它将始终True
  • @AshleyB 所以你故意想让someVar 成为TrueFalse 对吧?
【解决方案2】:

这应该可以工作

someVar = None

while (True):

   someVar = str.lower(input())

   if someVar == 'yes':
      someVar = True
      break

   elif someVar == 'no':
      someVar = False
      break

【讨论】:

  • 这是我使用break的答案的副本
  • 并非如此。我根据用户输入的内容将 someVar 设置为 True 或 False。我认为这就是 OP 想要的。
  • 好吧,someVar 是由 OP 设置的,试图创造一个条件来打破循环。有了break,现在就不需要了
  • 这就是我对@AnthonyPham 的要求——我理解这种混淆,但这实际上将someVar 设置为我想要的真/假。错误是我在循环保护中使用了someVar,并且没有明确提到必须将 someVar 设置为 True 或 False。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
  • 1970-01-01
  • 2022-07-16
  • 2012-10-20
  • 2020-08-20
  • 2020-11-28
相关资源
最近更新 更多