Почему python печатает утверждение выше бесконечного l oop? - PullRequest
2 голосов
/ 21 апреля 2020

Выход этого кода просто bb. Я хочу знать, почему не печатается cc, что означает, что третья строка не выполняется, то есть print("cc"). Это ссылка - https://ideone.com/M7LyS3

print("bb")
s2=input()
print("cc")
while 0>-50:
    pass
print("qq")

Ввод = 5

Ответы [ 3 ]

4 голосов
/ 21 апреля 2020

print не грипп sh по умолчанию. Здесь ваш первый отпечаток в очереди, а затем сбрасывается при вызове input(). Второй отпечаток ставится в очередь, но никогда не сбрасывается.

Если вы добавите необязательный аргумент flush, вы получите ожидаемое поведение:

print("bb", flush = True)
s2=input()
print("cc"", flush = True)
while 0>-50:
    pass
print("qq"", flush = True) # Will never happen because of the infinite loop, though
3 голосов
/ 21 апреля 2020

Попробуйте скопировать ваш код в этот онлайн-компилятор здесь: https://www.onlinegdb.com/online_python_compiler

Он работает так, как вы ожидали.

Причина, по которой он не печатает cc на вашем машина может быть из-за некоторых проблем или состояния гонки буфера, который печатает вывод. Программа занята этим бесконечным l oop и удерживает буфер для записи в терминал / консоль.

2 голосов
/ 21 апреля 2020

Код работает нормально:

print("bb")
s2=input()
print("cc")
while 0>-50:
    pass
print("qq")

Вывод:

bb
my_input
cc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...