我试图在python中打印数字20的因子,所以它会: 20 10 五 4 2 1
我意识到这是一个非常简单的问题,但我对我的尝试中的一些具体细节提出了疑问。如果我说:
def factors(n):
i = n
while i < 0:
if n % i == 0:
print(i)
i-= 1
当我这样做时,它只打印出20个。当我指定i = n然后递减i时,我认为有什么不对,它是否也会影响n?这是如何运作的? 我也意识到这可能是用for循环完成的,但是当我使用for循环时,我只能弄清楚如何向后打印因子,这样我得到:1,2,5,10 .... 我还需要使用迭代来做到这一点。帮助
注意:这不是一个家庭作业问题我试图自己重新学习python,因为它已经有一段时间了,所以我觉得很难被这个问题困住:(
答案 0 :(得分:1)
while i < 0:
这从一开始就是假的,因为i
可能是正面开始的。你想要:
while i > 0:
用语言来说,你想“在i
处开始n
,在它仍然大于0时减少它,在每一步测试因素”。
>>> def factors(n):
... i = n
... while i > 0: # <--
... if n % i == 0:
... print(i)
... i-= 1
...
>>> factors(20)
20
10
5
4
2
1
答案 1 :(得分:0)
while条件应该是i > 0
而不是i < 0
因为它永远不会满足它,因为我从20开始(或在其他情况下更多)
答案 2 :(得分:0)
希望我的回答有帮助!
#The "while True" program allows Python to reject any string or characters
while True:
try:
num = int(input("Enter a number and I'll test it for a prime value: "))
except ValueError:
print("Sorry, I didn't get that.")
continue
else:
break
#The factor of any number contains 1 so 1 is in the list by default.
fact = [1]
#since y is 0 and the next possible factor is 2, x will start from 2.
#num % x allows Python to see if the number is divisible by x
for y in range(num):
x = y + 2
if num % x is 0:
fact.append(x)
#Lastly you can choose to print the list
print("The factors of %s are %s" % (num, fact))