在我的计划中,要强迫所有数字的所有因素(不包括1个),我的循环中存在语法错误。代码看起来像这样。
- number = raw_input(" Enter a number ")
- x = 2
- coollist = []
- while x <= sqrt(int(number):
- if number % loop == 0:
- coollist.append(x)
- else:
- x += 1
- print coollist
语法错误读取
admin-trs-imac-2:编程yandong $ python因子。
文件"因子.py",第4行
x
^
语法:语法无效
当我取出结肠时,我在if语句中会发现语法错误,再次说结肠是无效的语法。
admin-trs-imac-2:编程yandong $ python因子。
文件"因子.py",第5行
x += 1
^
语法:语法无效
我在做主要错误的事情吗?我不知道什么。
(顺便说一句,正确的位置有凹痕,但没有出现)
(还应指向结肠的语法误差中的箭头)
# 回答2 循环没有在任何地方宣布。另外,如果这种情况是正确的,则它将是无限循环,因为" X"的值不会改变。没有代码标签("#"符号)在帖子框的顶部没有任何其他内容。
# 回答4
这将解决您的语法错误(缺少关闭括号):
x
您的时循环可能是类似的循环:
对于i在Xrange(2,int(num ** 0.5)+1)中
然后
如果不是num%我
,添加数字
一世
到您的因素列表。
RAW_INPUT
返回字符串,因此您需要转换
数字
到一个整数。
# 回答5
你好。您在寻找 *所有 *因素吗?因为即使您修复了代码,也不会以这种方式找到它们。您还需要包含数字/X,以找到大于SQRT(数字)的因素。
我认为Sympy有一些功能可以找到所有因素。
# 回答6
大于平方根的任何因素的相应因子小于相应的因素。例如,20和5是100的因素,但是在测试5时发现了20个因素,因此大于10的任何东西都是多余的。
# 回答7
嘿,格伦顿。有一阵子了。很高兴有你回来。
这将汇编有关因素
num ** 0.5
:
- factors = [i for i in xrange(2, int(num**0.5)+1) if not num%i]
这将扩展列表的其余部分:
- factors.extend([num/outList[i] for i in range(len(outList)-1, -1, -1)])
如果因素的最后一个数字是num的SQRT:
- factors.extend([num/outList[i] for i in range(len(outList)-2, -1, -1)])
有人有更好的方法吗?
# 回答8
谢谢,bvdet。这已经有一段时间。目前我一生中太少了...
如果允许您使用Numpy,则可以使用口罩。从某种意义上说,它只是检查一切:
- import number
- factors=numpy.arange(2,n+1)
- factors[n%factors==0]
其中n是数字。
如果您想变得更聪明(根据OP),可以做到这一点:
- import numpy
- factors=numpy.arange(2,int(n**0.5)+1)
- f1=factors[n%factors==0]
- s=set(f1).union(set(n/f1))
# 回答9
我仍然会遇到一个错误(在我的while循环中添加SQRT末尾的额外括号时),它说" SQRT"未定义。我完全使用了BVDET的代码。(他的第一个修订版)
# 回答11
我更改了代码,但是由于某种原因,它仍然不起作用。没有Erro r显示,什么都没有发生。
- number = int(input(" Enter a number "))
- x = 1
- coollist = []
- while x <= pow(int(number),0.5):
- if (number % x) == 0:
- coollist.append(x)
- else:
- x += 1
- coollist.append(number)
- print coollist
-
# 回答13 在段循环中,如果 (数字%x)== 0 是真的,X永不递增,您的循环永远不会结束。
# 回答14 我因为没有遇到这个明显的错误而感到愚蠢...谢谢大家。