こんにちは、お客様！
*驚かないでください。

ここでは、整数の *範囲* (`start`, `stop`), 整数の *除数` (`divisor`), *分割可能* のブール値フラグ (`divisible`) を受け取り、指定された範囲 (下限を含む。上限は除く) から *分割* (デフォルトでは `divisible == True`) する数値を標準出力ストリームに出力する関数の簡単なPython実装を紹介します、デフォルトでは `divisible == True`) または *divisible == False`) が指定された除数で除算* (`divisible == True`) または *Don't divide* (`divisible == False`) された数値を標準出力ストリームに出力します。

```python
def divisibility(start: int, stop: int, divisor: int, divisible: bool = True):
    for n in range(start, stop):
        if bool(n % divisor) ^ divisible:
            print(n)
```

伝統的に曖昧な問題文であることから、実際には別のことを意味している可能性が高いです。その場合は、課題を明確にしてください。

*おまけ*として、1つの関数で異なるタスク（割り切れるかどうかの判定と結果の出力）を組み合わせないように、また「パラメータによって」異なるタスクを実行しないようにアドバイスさせてください。これらのことを考慮すると、実装は例えば次のようになります。

```python
def divisible_in_range(start, stop, divisor):
    return (n for n in range(start, stop) if n % divisor == 0)

def non_divisible_in_range(start, stop, divisor):
    return (n for n in range(start, stop) if n % divisor != 0)
```

あるいは、（「関数型スタイル」を好むのであれば）このようになる。

コードブロック2

しかし、おわかりのように、この場合、実装は非常にコンパクトで読みやすくなるので、関数に分ける意味はないだろう。


*__
ありがとうございました、
Asyaソフトウェア
Здравствуйте, уважаемый Заказчик!
*(Не удивляйтесь: вас легко узнать по стилю.)*

Вот простая реализация на языке Python функции, принимающей *диапазон* целых чисел (`start`, `stop`), целый *делитель* (`divisor`) и булев флаг *делимости* (`divisible`) и выводящей в стандартный выходной поток те числа из указанного диапазона (включая нижнюю границу, но исключая верхнюю), которые *делятся* (`divisible == True`, по умолчанию) или *не делятся* (`divisible == False`) на указанный делитель.

```python
def divisibility(start: int, stop: int, divisor: int, divisible: bool = True):
    for n in range(start, stop):
        if bool(n % divisor) ^ divisible:
            print(n)
```

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

*В качестве бонуса* позвольте посоветовать вам избегать совмещения в одной функции разных задач (определение делимости и вывод результатов); а также выполнения разных задач «в зависимости от параметров». С учётом этих соображений реализация могла бы выглядеть, например, так.

```python
def divisible_in_range(start, stop, divisor):
    return (n for n in range(start, stop) if n % divisor == 0)

def non_divisible_in_range(start, stop, divisor):
    return (n for n in range(start, stop) if n % divisor != 0)
```

Или так (если вам больше нравится «функциональный стиль»).

```python
def divisible_in_range(start, stop, divisor):
    return filter(lambda n: n % divisor == 0, range(start, stop))

def non_divisible_in_range(start, stop, divisor):
    return filter(lambda n: n % divisor != 0, range(start, stop))
```

Впрочем, как видите, в этом случае реализация становится настолько компактной и легко читаемой, что, вероятно, нет смысла выделять её в функцию.


*__
С уважением,
Ася software*