while循环中的语法错误

在我的计划中,要强迫所有数字的所有因素(不包括1个),我的循环中存在语法错误。代码看起来像这样。

选择 | 换行 | 行号
  1. number = raw_input(" Enter a number ")
  2. x = 2
  3. coollist = []
  4. while x <= sqrt(int(number):
  5.     if number % loop == 0:
  6.         coollist.append(x)
  7.     else:
  8.         x += 1
  9. print coollist

语法错误读取
admin-trs-imac-2:编程yandong $ python因子。
文件"因子.py",第4行
x
^
语法:语法无效
当我取出结肠时,我在if语句中会发现语法错误,再次说结肠是无效的语法。
admin-trs-imac-2:编程yandong $ python因子。
文件"因子.py",第5行
x += 1
^
语法:语法无效
我在做主要错误的事情吗?我不知道什么。
(顺便说一句,正确的位置有凹痕,但没有出现)
(还应指向结肠的语法误差中的箭头)

# 回答1


计算括号。
# 回答2

选择 | 换行 | 行号
  1. if number % loop == 0:

循环没有在任何地方宣布。另外,如果这种情况是正确的,则它将是无限循环,因为" X"的值不会改变。没有代码标签("#"符号)在帖子框的顶部没有任何其他内容。

# 回答3


那么,您将为解决语法错误而推荐什么?
# 回答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

选择 | 换行 | 行号
  1. factors = [i for i in xrange(2, int(num**0.5)+1) if not num%i]

这将扩展列表的其余部分:

选择 | 换行 | 行号
  1. factors.extend([num/outList[i] for i in range(len(outList)-1, -1, -1)])

如果因素的最后一个数字是num的SQRT:

选择 | 换行 | 行号
  1. factors.extend([num/outList[i] for i in range(len(outList)-2, -1, -1)])

有人有更好的方法吗?

# 回答8


谢谢,bvdet。这已经有一段时间。目前我一生中太少了...
如果允许您使用Numpy,则可以使用口罩。从某种意义上说,它只是检查一切:

选择 | 换行 | 行号
  1. import number
  2. factors=numpy.arange(2,n+1)
  3. factors[n%factors==0]

其中n是数字。
如果您想变得更聪明(根据OP),可以做到这一点:

选择 | 换行 | 行号
  1. import numpy
  2. factors=numpy.arange(2,int(n**0.5)+1)
  3. f1=factors[n%factors==0]
  4. s=set(f1).union(set(n/f1))
# 回答9


我仍然会遇到一个错误(在我的while循环中添加SQRT末尾的额外括号时),它说" SQRT"未定义。我完全使用了BVDET的代码。(他的第一个修订版)
# 回答10


你需要这个:
从数学导入SQRT
# 回答11


我更改了代码,但是由于某种原因,它仍然不起作用。没有Erro r显示,什么都没有发生。

选择 | 换行 | 行号
  1. number = int(input(" Enter a number "))
  2. x = 1
  3. coollist = []
  4. while x <= pow(int(number),0.5):
  5.     if (number % x) == 0:
  6.         coollist.append(x)
  7.     else:
  8.         x += 1
  9. coollist.append(number)
  10. print coollist
  11.  
# 回答12

您如何运行脚本?
# 回答13

在段循环中,如果 (数字%x)== 0 是真的,X永不递增,您的循环永远不会结束。
# 回答14

我因为没有遇到这个明显的错误而感到愚蠢...谢谢大家。

标签: python

添加新评论