Это происходит потому, что вы вызываете prime_numbers()
как в main()
, так и в random_number()
, поэтому после того, как random_number()
повторяется 100 раз, он выводит свой результат, который снова передается в prime_numbers()
, даже хотя это число уже было оценено.
Простейшим решением было бы избавиться от вызова в main()
, чтобы он выглядел так:
def main():
number=random_number()
Однако я думаю он выглядит чище и имеет больше смысла в контексте имен ваших функций переместить итератор в main()
, так что random_number()
отвечает только за генерацию + печать случайного числа, prime_numbers()
отвечает только за определение + печать если число простое, а main()
оркестрирует основную идею программы. В этом случае ваш код будет выглядеть следующим образом:
import random
def main():
for number in range(100):
number = random_number()
prime_numbers(number)
def random_number():
number = random.randint(1,101)
print(number,' ',end='')
return number
def prime_numbers(number):
if number % 2 == 0:
print('Not prime')
else:
print('Prime')
return number
main()
Есть и другие улучшения, которые можно сделать здесь и там, но я надеюсь, что это, по крайней мере, ответит на ваш главный вопрос!