Я нашел этот синтаксис для печати простых чисел и очень запутался. Я хотел бы, чтобы это сообщество прояснило

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 в функции ограничен этой функцией: это не то же самое, что глобальный Nums. Это неудачное именование, поскольку значение, передаваемое функции, на самом деле представляет собой целое число, а не диапазон.

slothrop 18.09.2023 18:04

Как вы думаете, почему аргумент Nums не является целым числом? filter() вызывает функцию с каждым элементом диапазона в качестве аргумента.

Barmar 18.09.2023 18:04

Поместите print(Nums) внутри функции, чтобы увидеть значение.

Barmar 18.09.2023 18:05
if (Nums%x) ==0 означает «если остаток от деления Nums на x равен нулю».
slothrop 18.09.2023 18:05

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

Barmar 18.09.2023 18:06

Пожалуйста, уточните вашу конкретную проблему или предоставьте дополнительную информацию, чтобы выделить именно то, что вам нужно. Поскольку сейчас написано, трудно точно сказать, о чем вы спрашиваете.

Community 19.09.2023 09:35
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
6
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Код можно интерпретировать следующим образом:

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, поскольку они способствуют читаемости и понятности кода.

Именование переменных

Другие вопросы по теме

Perl для вызова функции tr при замене регулярного выражения
Как я могу исправить предупреждение о том, что класс «Форма» доступен за пределами определенной области видимости? (ЯВА 17)
Понимание неоднозначности перегрузки функций в C++: квадрат двойного числа и аргумент с плавающей запятой
Возникли трудности с разыменованием указателя в C
Условия на аргументы функции в Julia
Не могу понять, как использовать оператор if для проверки всех элементов массива с помощью обратного вызова и проверки, все ли они верны
Как писать коды в R для расчета определенной последовательности в R для определенного возраста
Функция удаления не работает, пока я не добавлю оператор if с истиной и ложью
Программа на C++ выводит адрес памяти, но только при использовании в качестве функции
Я не могу получить доступ к данным json, возвращенным из другой функции, там написано, что они не определены