我想从头到尾无限期地循环这段代码(直到用户杀死它(,所以我不必继续重新运行它。有没有办法使这成为可能?我将非常感谢您的帮助。程序应该在用户输入"完成"(并打印所有详细信息(后重新启动。
print ("Input done when finished")
print ("Input thresholds")
maximumnum = int(input("Input maximum number: "))
minimumnum = int(input("Input minimum number: "))
minimum = None
maximum = None
while True:
inp =input("Enter a number: ")
if inp == "done":
break
try:
num = float(inp)
except:
print ("Invalid input")
continue
## ---- Additional Check ---- ##
if num > maximumnum:
print('Number greater the maximum allowed range')
break
if num < minimumnum:
print('Number smaller the maximum allowed range')
break
## -------------------------- ##
if minimum is None or num < minimum:
minimum = num
if maximum is None or num > maximum:
maximum = num
print ("Maximum:", maximum)
print ("Minimum:", minimum)
print ("Try again")
为什么不把整个脚本包装在另一个 True 中呢?若要停止,用户必须终止正在运行的进程。
while True:
print ("Input done when finished")
print ("Input thresholds")
maximumnum = int(input("Input maximum number: "))
minimumnum = int(input("Input minimum number: "))
minimum = None
maximum = None
while True:
inp =input("Enter a number: ")
if inp == "done":
break
try:
num = float(inp)
except:
print ("Invalid input")
continue
## ---- Additional Check ---- ##
if num > maximumnum:
print('Number greater the maximum allowed range')
break
if num < minimumnum:
print('Number smaller the maximum allowed range')
break
## -------------------------- ##
if minimum is None or num < minimum:
minimum = num
if maximum is None or num > maximum:
maximum = num
print ("Maximum:", maximum)
print ("Minimum:", minimum)
print ("Try again")
我会把它包装在方法上并在无限循环中运行它。请尝试以下操作:
def process_input(maximumnum, minimumnum):
minimum = None
maximum = None
while True:
inp =input("Enter a number: ")
if inp == "done":
break
try:
num = float(inp)
except:
print("Invalid input")
continue
## ---- Additional Check ---- ##
if num > maximumnum:
print('Number greater the maximum allowed range')
break
if num < minimumnum:
print('Number smaller the maximum allowed range')
break
## -------------------------- ##
if minimum is None or num < minimum:
minimum = num
if maximum is None or num > maximum:
maximum = num
return minimum, maximum
def main():
print("Input done when finished")
print("Input thresholds")
maximumnum = int(input("Input maximum number: "))
minimumnum = int(input("Input minimum number: "))
minimum, maximum = process_input(maximumnum, minimumnum)
print("Maximum:", maximum)
print("Minimum:", minimum)
print("Try again")
if __name__ == '__main__':
while True:
main()
希望这有帮助。
我经常使用这样的范式来完成"循环,直到我这么说"之类的事情。
class UserKilledException(KeyboardInterrupt):
pass
try:
while True:
#do stuff
except UserKilledException:
#do cleanup here
只需让您的代码在用户决定以某种方式关闭应用程序时抛出UserKilledException
即可。 如果它是一个 cli 应用程序,那么KeyboardInterrupt
就可以了。