Почему мои условные циклы не работают должным образом? - PullRequest
0 голосов
/ 19 сентября 2019

Это проблема для создания программы регистрации курса.Я чувствую, что большую часть работы выполнил, но у меня возникли проблемы с пониманием, почему, когда во втором цикле while значение выбора установлено на A, оно не вернется в цикл добавления курса.

choice = input("Enter A to add course, D to drop course, and E to exit: ")
choice = choice.upper()

courses = []

while choice == "A":
    course1 = input("Enter a course to add: ")
    courses.append(course1)
    courses.sort()
    print("Courses Registered: ", courses)
    choice = input("Enter A to add course, D to drop course, and E to exit: ")
    choice= choice.upper()
else:
    while choice == "D":
        drop1 = input("Enter a course to drop: ")
        if drop1 in courses:
            courses.remove(drop1)
            print("Course Dropped")
            courses.sort()
            print("Courses Registered: ", courses)
            choice = input("Enter A to add course, D to drop course, and E to exit: ")
            choice = choice.upper()
        else:
            print("You are not registered in that class")
            choice = input("Enter A to add course, D to drop course, and E to exit: ")
            choice = choice.upper()
    else:
        if choice == "E":
            print("You have exited the program")
        else:
            print("Invalid input")
            choice = input("Enter A to add course, D to drop course, and E to exit: ")
            choice = choice.upper()

Это работает до тех пор, пока я не уроню класс и не захочу вернуться к добавлению классов.Затем он просто продолжается в коде и выведет «Неверный ввод»

Ответы [ 3 ]

0 голосов
/ 19 сентября 2019

Я бы предложил не использовать структуру while / else.Ваш код выходит после любого неверного ввода, а не повторяется.Второй цикл принимает только D, а не A. Итак, используйте только один цикл

Попробуйте следующую структуру

courses = []

while True:
    choice = input("Enter A to add course, D to drop course, and E to exit: ").upper()
    if choice == "E":
        break
    elif choice == "A":
        course1 = input("Enter a course to add: ")
        courses.append(course1)
        courses.sort()
        print("Courses Registered: ", courses)
     elif choice == "D":
         print("drop")
     else:
         print("invalid") 
0 голосов
/ 19 сентября 2019

Вы хотите продолжить выполнение, если ввод не E/e, поэтому вы должны написать так.

choice = input("Enter A to add course, D to drop course, and E to exit: ")
choice = choice.upper()

courses = []

while choice != "E":
  if choice == "A":
    course1 = input("Enter a course to add: ")
    courses.append(course1)
    courses.sort()
    print("Courses Registered: ", courses)
  elif choice == "D":
    drop1 = input("Enter a course to drop: ")
    if drop1 in courses:
      courses.remove(drop1)
      print("Course Dropped")
      courses.sort()
      print("Courses Registered: ", courses)
    else:
        print("You are not registered in that class")
  else:
    print("Invalid input")

  choice = input("Enter A to add course, D to drop course, and E to exit: ")
  choice = choice.upper()
else:
  print("You have exited the program")
0 голосов
/ 19 сентября 2019

Используйте оператор break для завершения while loop, иначе продолжайте обновлять выбор

courses = []
choice = input("Enter A to add course, D to drop course, and E to exit: ")
choice = choice.upper()

while True:
    if choice == "A":
        course1 = input("Enter a course to add: ")
        courses.append(course1)
        courses.sort()
        print("Courses Registered: ", courses)
        choice = input("Enter A to add course, D to drop course, and E to exit: ")
        choice= choice.upper()
    elif choice == "D":
        drop1 = input("Enter a course to drop: ")
        if drop1 in courses:
            courses.remove(drop1)
            print("Course Dropped")
            courses.sort()
            print("Courses Registered: ", courses)
            choice = input("Enter A to add course, D to drop course, and E to exit: ")
            choice = choice.upper()
        else:
            print("You are not registered in that class")
            choice = input("Enter A to add course, D to drop course, and E to exit: ")
            choice = choice.upper()
    elif choice == "E":
        print("You have exited the program")
        break
    else:
        print("Invalid input")
        choice = input("Enter A to add course, D to drop course, and E to exit: ")
        choice = choice.upper()
...