无限while循环内的Sleep()函数

Posted

技术标签:

【中文标题】无限while循环内的Sleep()函数【英文标题】:Sleep() function inside a infinite while loop 【发布时间】:2020-03-17 06:23:08 【问题描述】:

可以在while循环中使用睡眠功能吗?我有这个循环到无穷大。当我添加time.sleep(10) 时,它会在第二次尝试后跳出循环。是否可以在无限循环中time.sleep()

import time as time
while True:
    for i in range(2):
       num = int(input("Enter an integer: "))
       print("The double of",num,"is",2 * num)
    print('10')
    time.sleep(10)

【问题讨论】:

我无法重现错误 - 对我来说很好 不,它不会跳出循环。 代码运行良好! 对我来说,它在第二次要求整数后就跳出了循环! 您尝试插入浮点数还是字符串? 【参考方案1】:

您发布的代码运行良好。当用户输入不完全是 int 的内容时,问题可能(如 @Guy 所述)是原因。这是因为input 返回一个字符串,而int 尝试从该字符串中获取一个整数,例如中。在未能阅读int 时引发ValueError。例如


>>> num = input("Enter an integer: ")
Enter an integer: 12.5
>>> num 
'12.5'  <-- num, the return of input is a string
>>> int(num) <-- int fails to get a integer out of the string num
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '12.5'   

因此,您需要通过 try except 块明确处理这种情况


import time as time
while True:
    for i in range(2):
       try: 
           num = int(input("Enter an integer: "))
           print("The double of",num,"is",2 * num)
       except ValueError: 
           print("Please enter a valid integer")
    print('10')
    time.sleep(10)

【讨论】:

以上是关于无限while循环内的Sleep()函数的主要内容,如果未能解决你的问题,请参考以下文章

使用无限while循环动态更改值是不好的做法吗?

使用 sleep() 函数作为带有 while 循环的计时器不起作用?

选择器内的 SwiftUI 无限循环

从无限的while循环中在函数之间传递数据

启动和停止无限循环

如何在while循环中评估函数