#python
Вопрос:
я пытаюсь посчитать делитель, если число имеет 4 делителя, напечатает «элегантное число», иначе «не элегантное число», но у меня возникли проблемы при печати, я закончил показывать делители из числа, но моя программа не может показать элегантное число или нет. у меня есть ваше мнение, чтобы исправить это. вот мой код:
N = int(input("enter number: "))
i = 1
factor = 0 # this for count divisors but doesn't right
while (i <= N):
if(N%i==0):
print(i)
factor =i # this for count divisors but doesn't right
i =1
if(factor==4):
print("elegant number")
else:
print("not elegant number")
я поместил комментарий в строку, в которой указана строка для делителей числа.
Комментарии:
1.
factor
вычисляет сумму делителей, а не количество делителей. Я думаю, ты хочешь написатьfactor = 1
вместоfactor =i
этого .2. Также разве это не должно быть внутри условия? Вы просто суммируете все числа от 1 до
N
…
Ответ №1:
Я думаю, что основной проблемой внутри кода было добавление factor = i
вместо factor = 1
(для учета нового делителя). Кроме того, размещение factor = 1
условия должно было быть внутри if-statement
.
Вот обновленная версия кода:
N = int(input("enter number: "))
factors = 0
for i in range(1,N 1): # Add N 1 to loop over "i=N" as well
if N%i == 0:
print(i)
factors = 1
if factors == 4 :
print("elegant number")
else:
print("not elegant number")
Пожалуйста, дайте мне знать в разделе комментариев, если вам нужна дополнительная помощь. Овации,
PS. Альтернативная версия с использованием while-loop
:
N = int(input("enter number: "))
factors = 0
i = 1
while i<=N:
if N%i == 0:
print(i)
factors = 1
i = 1
if factors == 4 :
print("elegant number")
else:
print("not elegant number")
Комментарии:
1. что мне делать, если я хочу использовать цикл while, а не для цикла
2. @ryand Переключиться на цикл for 😉
3. значит, использование цикла while невозможно?
4. Да, это возможно, пожалуйста, найдите прилагаемую вторую версию в оригинальном ответе. Просто использование a
while-loop
на самом деле не оправдано.5. Очень хорошо сказано! Использование
while
цикла не оправдано . @ryand Когда у вас есть очень определенный диапазон для перебора, имеет больше смысла использоватьfor
цикл. Вы должны использовать цикл while только тогда, когда вы не знаете, когда он завершится .