大于/小于符号的基本Python语法错误

时间:2016-04-22 15:29:33

标签: python

我正在教自己如何编写python代码。在这个问题中,我继续接收大于b小于或等于x行的0的语法错误。说这是一个无效的语法。为什么会这样?

我可以使用范围(x)函数来获取数字列表,但这种方式似乎应该更快更容易。谢谢你的帮助

def factorial(x):
    if x==0:
        return 1
    elif x>0:
        b=int
        total = 1
        for 0<b<=x:
            total*=b
        return total

2 个答案:

答案 0 :(得分:3)

您的意思是if,而不是for(在这种情况下,解决方案是将for替换为if),否则您希望代码将迭代,也许,在给定范围内的所有整数b(在这种情况下答案是for不能像那样工作;你需要构造一个显式对象来迭代,例如使用{{1 }})。

我怀疑后者,因为你没有给range一个值。 (嗯,实际上,你有,但可能不是你想要的方式。你已经使b等于代表整数类型的对象。如果这对你没有意义,暂时忽略它。)

我担心Python不够聪明,你不能说“b是一个整数;请为0和b之间的每个可能值做点什么” - 我认为这是什么你希望的。但是,例如,x是表示从1(包括)到range(1,x+1)(不包括)的所有整数的对象,您可以使用x+1循环为每个整数执行某些操作。

答案 1 :(得分:1)

for必须后跟一个可迭代的。正确的语法是:

for variable in iterable:

在你的情况下,你应该生成一些从1x的迭代。要执行此操作,您应该使用range(1,x+1)(如果您在python 2中,则使用xrange

您的代码应如下所示:

for b in range(1, x+1):
    total *= b

此外,b = int不是您的想法。这不是声明,它使b不是类型int的变量,而是实际上类型本身。在python中,你不能限制变量保持某种类型(至少不是以一种简单的方式,AFAIK)