#python
#python
Вопрос:
Мой цикл while заканчивается только тогда, когда он соответствует второму условию, первое игнорируется, я понятия не имею, что я делаю не так
while (response !=0) or (cont != 5):
response = os.system("ping -c 2 " hostname)
cont=cont 1
print cont
print response
Комментарии:
1. Ваш цикл будет продолжаться до тех пор, пока выполняется любое условие. Если вы хотите, чтобы он заканчивался, как только одно условие не выполняется, используйте
and
вместоor
.2. Пожалуйста, используйте
subprocess.check_output
или аналогичную функцию для вызова сценария оболочки вместоos.system
. Таким образом, у вас будет лучший контроль над выводом. Смотрите: docs.python.org/2/library /…3. Проблема заключалась в использовании оператора or вместо and , спасибо!
4. @LaurentLAPORTE Я посмотрю на это, спасибо!
Ответ №1:
С subprocess.call
:
import subprocess
for count in range(5);
response = subprocess.call(["ping", "-c", "2", hostname])
if not response:
break
Предпочитаю итерацию с range
или xrange
.
Ответ №2:
Измените свой or
на and
. Когда он проверяет первое условие, и если оно равно false, а второе условие равно true, все условие будет истинным. Это означает, что либо первое условие истинно, либо второе условие истинно.
While ( false or true ) will be while ( true )
Чтобы проверить оба условия, которые вы должны использовать and
. Он проверяет, что оба условия должны быть true
для выражения true
.
while ( false and true ) will be while ( false )
while (response !=0) and (cont != 5):
response = os.system("ping -c 2 " hostname)
cont=cont 1
print cont
print response