Nums = range(1,60)
def is_prime(Nums):
for x in range(2, Nums):
if (Nums%x) ==0:
return False
return True
prime_numbers = list(filter(is_prime,Nums))
Print(prime_numbers)
Я ожидаю, что при использовании синтаксиса for x in range(2, Nums) возникнет ошибка, поскольку аргумент Nums не является целым числом. Однако Python успешно интерпретирует его и переходит к следующей строке кода.
Опять же, что означает синтаксис if (Nums%x) ==0
Как вы думаете, почему аргумент Nums не является целым числом? filter() вызывает функцию с каждым элементом диапазона в качестве аргумента.
Поместите print(Nums) внутри функции, чтобы увидеть значение.
if (Nums%x) ==0 означает «если остаток от деления Nums на x равен нулю».
Было бы меньше путаницы, если бы вы не использовали одно и то же имя переменной для параметра функции и глобальной переменной.
Пожалуйста, уточните вашу конкретную проблему или предоставьте дополнительную информацию, чтобы выделить именно то, что вам нужно. Поскольку сейчас написано, трудно точно сказать, о чем вы спрашиваете.






Вы в замешательстве, потому что в фрагменте кода используется одно и то же имя переменной для аргумента функции и глобальной переменной.
Код можно интерпретировать следующим образом:
Nums = range(1,60)
def is_prime(n):
print(n)
for x in range(2, n):
if (n%x) ==0:
return False
return True
prime_numbers = list(filter(is_prime,Nums))
print(prime_numbers)
Вы также можете использовать функцию type, чтобы узнать тип аргумента Nums (n) внутри функции (это integer).
Рекомендую вам прочитать здесь подробнее о функции filter, а если этого недостаточно, вы можете провести дальнейшее исследование самостоятельно.
Выражение if (Nums%x) ==0:
% — это оператор модуля в Python, который вычисляет остаток от деления числа слева (Nums) на число справа (x).
(Nums % x) вычисляет остаток при делении Nums на x.
(Nums % x) == 0 проверяет, равен ли остаток нулю.
Кроме того, я рекомендую узнать больше о соглашениях об именах в Python, поскольку они способствуют читаемости и понятности кода.
Numsв функции ограничен этой функцией: это не то же самое, что глобальныйNums. Это неудачное именование, поскольку значение, передаваемое функции, на самом деле представляет собой целое число, а не диапазон.