【问题标题】:Python: Loop continues even when user quitsPython:即使用户退出,循环也会继续
【发布时间】:2019-09-17 10:25:53
【问题描述】:

我一直在做一个项目,在我的程序中遇到了这个问题,想知道是否有人能够告诉我解决方法。在这里,我必须从用户那里获取他们希望程序运行的次数。我确实在循环过程中接受输入并在 N 范围内运行循环(用户希望程序运行的次数),但我在 1 N 时终止程序

n = int(input("Number of times you want the program to run - "))
if n <= 0 or n >= 100 : 
    print("Number entered too large/big")
    quit()

for i in range(n):
    string = input("Enter a word - ")
    print(i)

我尝试在没有输入的情况下运行代码,一切运行良好,但一旦我开始输入,程序就会出现故障。当我输入的 N 小于零时,程序退出,当 N 在有效范围内时,程序工作正常,但当 N > 100 时,程序继续运行直到完成并关闭控制台(在 Spyder 工作)。 非常感谢一些帮助:)

【问题讨论】:

  • 你提到的code sn-p没有问题,工作正常
  • 代码对我来说可以正常工作。也许你输入了错误的代码。

标签: python python-3.x for-loop input


【解决方案1】:

所以我发现了代码的问题,quit() 没有做任何事情,因此无论何时输入任何值,for 循环都会一直运行。

现在为什么 quit() 在 n&lt;=0 时起作用?简单的答案,它没有。当您输入 for i in range(n)if n &lt;= 0 例如 n= -3 时,这就是 for 循环解析的内容

i=0
while i < n:
   i += 1

所以当 n = -3 或 n

n = int(input("Number of times you want the program to run - "))
if n <= 0 or n >= 100 : 
    print("Number entered too large/big")
else:
    for i in range(n):
        string = input("Enter a word - ")
        print(i)

此代码按需要工作

PS 至于为什么 quit() 不起作用,我不知道,我从未使用过 spyder,因此没有遇到过 quit () 函数

【讨论】:

  • 谢谢。 sys.exit 解决了我的问题,但为什么 quit() 不起作用? quit() 不是也用来终止程序/控制台的吗?
  • 我不太确定,可能是特定于 spyder 的问题,我没有这方面的经验,在这方面道歉:)
  • 您可以参考这里了解为什么退出不起作用stackoverflow.com/questions/19747371/…
猜你喜欢
  • 2021-11-03
  • 1970-01-01
  • 2020-08-19
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
  • 1970-01-01
  • 2021-03-20
  • 2017-04-10
相关资源
最近更新 更多