Это вопрос от codeacademy.com, где я изучаю Python. Так что я хочу определить функцию, которая проверяет, является ли число простым. Если это так, верните True. Если это не так, верните False.Функция is_prime - Ошибка
Вот мой код:
def is_prime(x):
lst = [] # empty list to put strings 'False' and 'True'
for i in range(2,x): # starting at 2 and not including x (number 1 is a divisor of all numbers
if x <= 2: # [1] see bellow the explanation
lst.append('False')
break
elif x % i == 0: # if x is divisible by i(number between 2 and not including x)
lst.append('False')
break # break, because we already know x is not prime
elif x % i > 0:
lst.append('True') # x is not divisible by i
if 'False' in lst:
return False # x is not prime - return False
else:
return True # 'True' is in lst, so x is prime - return True
print is_prime(-2) # [2] I get an error here. See below
[1] - Я сделал это условие, потому что в codeacademy он говорит: «Намек Помните: все числа меньше 2 не являются простыми числами»
[2] - Когда я запускаю, например, «print is_prime (11)» или «is_prime (6)», он работает нормально. Поэтому я отправляю ответ, но codeacademy его не принимает. В нем написано: «Ваша функция не работает на is_prime (-2). Она возвращает True, когда она должна возвращать False».
Привет! Добро пожаловать в StackOverflow. На самом деле, это очень хороший вопрос, и вы предоставили всю информацию, необходимую для воспроизведения вашей проблемы - это очень редко для первых плакатов StackOverflow. Поэтому поздравляю с этим (и на вашем английском языке). Рад видеть вас здесь! –
Я очень рекомендую http://pythontutor.com для визуализации выполнения: если вы туда поедете и вставьте свой код в окно выполнения, вы увидите, почему вы получаете 'True' для' is_prime (-2) '. –
Кроме того, вам не нужно проверять все числа между '2' и' x', если вы хотите найти простые числа - 'int (math.sqrt (x))' является достаточно высокой верхней границей. –