简体   繁体   中英

Why am I stuck in a while loop?

Please help me fix my code. I tried both but I'm still stuck even if I already inputted values 1 - 100.

OPTION 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

OPTION 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

If you have any ideas how to fix this, please tell me! Thank you so much!

Working code:

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

Try this

def get_grades(record):
    Data = Class_Record.split(" ")
    Math = float(Data[1])
    Physics = float(Data[2])
    Chemistry = float(Data[3])
    return(Math, Physics, Chemistry)


Class_Record = input('Enter name & grades in math,physics and chemistry, separated by a space: ')

Math, Physics, Chemistry = get_grades(Class_Record)

while (Math<0 or Math>100): 
    Class_Record = input('Error. Please only enter 1-100. Try again!')
    Math, Physics, Chemistry = get_grades(Class_Record)
while (Physics<0 or Physics>100):
    Class_Record = input('Error. Please only enter 1-100. Try again!')
    Math, Physics, Chemistry = get_grades(Class_Record)
while (Chemistry<0 or Chemistry>100):
    Class_Record = input('Error. Please only enter 1-100. Try again!')
    Math, Physics, Chemistry = get_grades(Class_Record)


average = ((Math+Physics+Chemistry)/3)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM