Почему мой оператор if не завершается, когда я использую функцию break? - PullRequest
0 голосов
/ 30 апреля 2018

Этот код похож на счетчик билета, где пользователь выбирает, хочет ли он билет на основе цены или места.

Я не дошел до части кода выбора места, но когда я делал выбор цены один раз, после того, как это было сделано, он распечатывал макет слишком много раз (вместо одного, каким он должен быть).

После первого запуска «if» следует распечатать макет, а затем прервать его. Однако он этого не делает, а вместо этого продолжает распечатывать макет и многократно выполнять функцию if.

Пожалуйста, помогите мне исправить это. Спасибо!

line1 = [10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10]
line2 = [10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10]
line3 = [10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10]
line4 = [10 , 10 , 20 , 20 , 20 , 20 , 20 , 20 , 10 , 10]
line5 = [10 , 10 , 20 , 20 , 20 , 20 , 20 , 20 , 10 , 10]
line6 = [10 , 10 , 20 , 20 , 20 , 20 , 20 , 20 , 10 , 10]
line7 = [20 , 20 , 30 , 30 , 40 , 40 , 30 , 30 , 20 , 20]
line8 = [20 , 30 , 30 , 40 , 50 , 50 , 40 , 30 , 30 , 20]
line9 = [30 , 40 , 50 , 50 , 50 , 50 , 50 , 50 , 40 , 30]
seats = [line1, line2 , line3 , line4 , line5 , line6 , line7 , line8 , line9]

for line in seats:
    print(line) 

seatFound = False

SorP = input("Would you like to select a seat based on the price (P) or seat (S)")

if SorP == "P":
    price = int(input("What price would you like?"))
    for line in seats:
        for seat in line:
        if seat == price:
            print("There is a seat available for that price")
            seatFound = True
            position = line.index(seat)
            line.remove(seat)
            line.insert(position , 0)
            for line in seats:
                print(line) 
            break
if seatFound != True:
    print("There is not a seat available for this price. Try again")

1 Ответ

0 голосов
/ 30 апреля 2018

break выходит только из самой внутренней петли for или while. Внешний цикл в вашем фрагменте продолжит выполняться.

for line in seats:
    for seat in line:
        [...]
        # exit the inner loop. execution continues in the outer loop
        break

Возможно, вы захотите изменить код, чтобы выполнить поиск доступного места в отдельной функции, которая выполняет return, как только предмет найден.

...