【问题标题】:While loop still looping [duplicate]虽然循环仍在循环[重复]
【发布时间】:2018-12-09 11:15:39
【问题描述】:

我需要用户输入“F”或“M”。所以这是我的代码:

a = input("")
while a != 'F' or a != 'M':
    a = input("")

但即使用户输入“M”或“F”或其他任何内容,它仍会循环。 所以我试过这个:

genre = input("")
while genre != 'F':
    genre = input("")

而且它有效.. 我只需要'M'或'F',有人可以帮我吗?

提前致谢

【问题讨论】:

  • 您的条件是始终为真a 的值是什么并不重要。 至少有一个您的两个!= 条件为真(a 不能同时设置为FM),并且or 上的@987654329 @ 或 False or TrueTrue or True 将始终为真。您想使用and,希望两个测试同时为真

标签: python while-loop


【解决方案1】:

您需要and 而不是or

while a != 'F' and a != 'M'

因为a 不能同时等于两个东西。就像现在一样,如果是a=='M',那么是a != 'F',所以循环继续(对于反向值也是如此)。所以,循环永远不会结束。

【讨论】:

  • 非常感谢,但我现在遇到了这个问题:
  • danger = input("") while type(danger) != int: danger = input("") 无论我输入什么内容,它仍然在循环
  • 你从input得到的总是一个字符串。所以你需要把它转换成int
  • 喜欢这个? :danger = int(input("") 但是如果我输入一个字符串,我会出错,因为不是正确的类型,我需要接受这个错误类型的错误,没有例外。我需要循环,而我没有 int
  • 你不能单独在while 中这样做。您可以使用try/except 将其转换为整数
【解决方案2】:

a != 'F' or a != 'M' 之一将始终为 True。试试这个:

while a not in 'FM':
    ...

虽然这也会接受FM;更好的方法是使用:

while a not in set('FM'):
    ...

【讨论】:

  • 文件“”,第 2 行,而不在 'FM' 中 ^ SyntaxError: invalid syntax
  • 没有足够的信息来提供帮助。是什么exacly 导致了语法错误? while 之前和之后的行是什么?缩进正确吗?
  • 我在控制台中试过这个
  • @FatihAkman:你错过了最后的:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-14
  • 2017-11-16
  • 2015-09-14
相关资源
最近更新 更多