Прежде всего у вас есть операторы печати, в вашем коде уже так просто, призывающих prime
приведет материал печатается на экране. Когда у вас есть голова return
, ваша функция вернет None
. Это означает, что когда вы делаете:
print prime(6)
prime(6)
возвратит None
что делает этот эквивалент:
print None
Тогда у вас есть серьезная логическая ошибка в коде, потому что вы не проверять каждый возможный делитель из-за до return
слишком рано. Например, если у вас есть число 9, это не простое число. Однако ваша функция будет печатать, что это просто, потому что при первом прогоне цикла for i
будет равно 2, что означает, что 9%2
является ложным, так что ветвь else берется и выводит, что число является простым. Затем функция возвращается в эту точку, не проверяя остальную часть чисел. Если вы запустите этот код, вы увидите, что произойдет: http://ideone.com/zxdez2
Проблема с дизайном заключается в том, что вы действительно должны оставить IO отдельно от остальных функций. Предположим, вы хотели повторно использовать prime
где-то еще позже, вы не можете этого сделать, не распечатывая этот код на экране. Возможно, это не так, как вы хотите, в более поздний срок, но с этим сложно что-то сделать. Вместо этого он гораздо чище возвращать логическое значение, которое представляет, если число было простое или не затем распечатывают на основе этого возвращаемого значения:
def prime(num):
for i in range (2,num):
if num%i == 0:
return False
return True
x = 6
if prime(x):
print x, "is not a prime number."
else:
print x, "is a prime number."
Это питон правильно? Если да, сделайте изменение, чтобы добавить этот тег. – shuttle87