Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
陷入无限循环。python_Python_Python 3.x - Fatal编程技术网

陷入无限循环。python

陷入无限循环。python,python,python-3.x,Python,Python 3.x,我试图让这段代码运行,这样当我输入'done'时,它就把我从循环中解救出来。问题是我放了一个try/except来尝试捕捉任何不是数字的东西,并反馈错误消息。这会在if语句之前捕获,该语句会将我从循环中分离出来,并反馈错误消息,并在无限循环中捕获我。我尝试在所有if/else语句之后移动try/except,但是字符串被放置在max的值中,这不是我想要实现的。有没有办法让try和except运行,但仍然允许我传递“done”命令退出循环 largest = None smallest = Non

我试图让这段代码运行,这样当我输入'done'时,它就把我从循环中解救出来。问题是我放了一个try/except来尝试捕捉任何不是数字的东西,并反馈错误消息。这会在if语句之前捕获,该语句会将我从循环中分离出来,并反馈错误消息,并在无限循环中捕获我。我尝试在所有if/else语句之后移动try/except,但是字符串被放置在max的值中,这不是我想要实现的。有没有办法让try和except运行,但仍然允许我传递“done”命令退出循环

largest = None
smallest = None

while True:
    num = input("Enter a number: ")
    try:
        num = float(num)
    except:
        print('Invalid Input')
        continue
    if num == "done" :
        break
    elif largest is None:
        largest = num
    elif smallest is None:
        smallest = num
    elif largest < num:
        largest = num
    elif smallest > num:
        smallest = num

    print(num)

print("Maximum", largest)
print("Minimum", smallest)
max=None
最小=无
尽管如此:
num=输入(“输入一个数字:”)
尝试:
num=浮点(num)
除:
打印('无效输入')
持续
如果num==“完成”:
打破
如果没有:
最大=num
如果最小值为“无”:
最小=num
elif最大数值:
最小=num
打印(个)
打印(“最大”,最大)
打印(“最小值”,最小值)
更改此选项:

try:
    num = float(num)
except:
    print('Invalid Input')
    continue

if num == "done":
    break
为此:

try:
    num = float(num)
except:
    if num == "done":
        break

    print('Invalid Input')    
    continue

通过将
if
放在
之外的
内,您允许循环在
继续之前
中断
,首先测试
完成
,然后转换为浮点

您可以简化测试

如果您不输入任何数字或输入一个数字,该程序应该可以运行

    num = input("Enter a number: ")
    if num == "done" :
        break
    try:
        num = float(num)
    except:
        print('Invalid Input')
        continue
    largest = largest or num
    smallest = smallest or num
    largest = max(num, largest)
    smallest = min(num, smallest)

原因是,在检查
“done”
之前,您正在使用检查输入是否为浮点,因此,当它实际上是
“done”
时,它只是在检查之前继续

我会这样做的

largest = None
smallest = None

while True:
    num = input("Enter a number: ")

    # check if it's done first
    if num == "done" :
        break

    try:
        num = float(num)
    except:
        print('Invalid Input')
        continue

    elif largest is None:
        largest = num
    elif smallest is None:
        smallest = num
    elif largest < num:
        largest = num
    elif smallest > num:
        smallest = num

    print(num)

print("Maximum", largest)
print("Minimum", smallest)
max=None
最小=无
尽管如此:
num=输入(“输入一个数字:”)
#检查是否先完成
如果num==“完成”:
打破
尝试:
num=浮点(num)
除:
打印('无效输入')
持续
如果没有:
最大=num
如果最小值为“无”:
最小=num
elif最大数值:
最小=num
打印(个)
打印(“最大”,最大)
打印(“最小值”,最小值)

@ KahanRobn森我在C++和Python中编程很多,<代码> > <代码>在Python <代码>或中无效。