Ваша функция выполняет три вещи:
- тестирование независимо от того, является ли ее ввод простым числом
- печать результатэтого теста в удобном для человека виде
- возвращая свои входные данные
Чтобы заставить его делать то, что вы хотите, вместо дружественного к человеку возвращают выводinput.
def my_function(number):
if number == 1:
result = "Not a Prime Number."
elif number == 2:
result = "Prime Number"
for i in range(2, number):
if number % i == 0:
result = "Not a Prime Number"
break
elif number % i != 0:
result = "Prime Number"
break
return result
Это хорошо, но часто функция более пригодна для повторного использования, если она делает только одну вещь - в этом случае тесты на простоту, а не две - тесты на простоту и форматирует результат для читателей-людей.
Мы можем изменить функцию, чтобы она возвращала логическое значение - True
или False
- и сделать форматирование вывода вне функции.
def my_function(number):
if number == 1:
result = False
elif number == 2:
result = True
for i in range(2, number):
if number % i == 0:
result = False
break
elif number % i != 0:
result = True
break
return result
>>> number = 1
>>> print(number, 'is', 'a prime number' if my_function(number) else 'not a prime number')
1 is not a prime number
>>> number = 2
>>> print(number, 'is', 'a prime number' if my_function(number) else 'not a prime number')
2 is a prime number
Наконец,есть ошибка в вашей логике.Как написано, цикл выполняется только один раз, потому что один из двух тестов всегда будет успешным.