首页 > 解决方案 > 为什么我陷入了一个while循环?

问题描述

请帮我修复我的代码。我都试过了,但即使我已经输入了值 1 - 100,我仍然卡住了。

选项1 :

        Class_Record = input('Enter name & grades in math,physics and chemistry, separated by a space: ')
        Data = Class_Record.split(" ")
        Math = float(Data[1])
        Physics = float(Data[2])
        Chemistry = float(Data[3])
        while (Math<0 or Math>100): 
            Class_Record = input('Error. Please only enter 1-100. Try again!')
        while (Physics<0 or Physics>100):
            Class_Record = input('Error. Please only enter 1-100. Try again!')
        while (Chemistry<0 or Chemistry>100):
            Class_Record = input('Error. Please only enter 1-100. Try again!')
        else:
            average = ((Math+Physics+Chemistry)/3)
            Record[Data[0]] = "%0.2f" % average

选项 2:

        Class_Record = input('Enter name & grades in math,physics and chemistry, separated by a space: ')
        Data = Class_Record.split(" ")
        Math = float(Data[1])
        Physics = float(Data[2])
        Chemistry = float(Data[3])
        while (Math<0 or Math>100): 
            Class_Record = input('Error. Please only enter 1-100. Try again!')
            if (Math>0 and Math<100):
                break
        while (Physics<0 or Physics>100):
            Class_Record = input('Error. Please only enter 1-100. Try again!')
            if (Physics>0 and Physics<100):
                break
        while (Chemistry<0 or Chemistry>100):
            Class_Record = input('Error. Please only enter 1-100. Try again!')
            if (Chemistry>0 and Chemistry<100):
                break

如果您对如何解决此问题有任何想法,请告诉我!太感谢了!

标签: pythonpython-3.xwhile-loop

解决方案


工作代码:

Class_Record = input('Enter name & grades in math,physics and chemistry, separated by a space: ')
while True:
    Data = Class_Record.split(" ")
    Math = float(Data[1])
    Physics = float(Data[2])
    Chemistry = float(Data[3])
    if (Math < 0 or Math > 100):
        Class_Record = input('Error. Please only enter 1-100. Try again!')
        continue
    if (Physics < 0 or Physics > 100):
        Class_Record = input('Error. Please only enter 1-100. Try again!')
        continue
    if (Chemistry < 0 or Chemistry > 100):
        Class_Record = input('Error. Please only enter 1-100. Try again!')
        continue
    average = ((Math + Physics + Chemistry) / 3)
    print(Data[0], "%0.2f" % average)
    break

推荐阅读