Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将此代码转换为一行或缩短?_Python - Fatal编程技术网

Python 如何将此代码转换为一行或缩短?

Python 如何将此代码转换为一行或缩短?,python,Python,我是一名中学生,刚刚开始学习函数。这段代码是关于指数的,但我不能使用导入数学。有没有办法把这段代码变成一行或更短 def power(a, n): x = 1 if n == 0: print(1) elif n > 0: for i in range(n): x = x * a else: for i in range(-n): x = x * a r

我是一名中学生,刚刚开始学习函数。这段代码是关于指数的,但我不能使用导入数学。有没有办法把这段代码变成一行或更短

def power(a, n):
    x = 1
    if n == 0:
        print(1)
    elif n > 0:
        for i in range(n):
            x = x * a
    else:
        for i in range(-n):
            x = x * a

    return x


print(power(2, 5))

您可以使用内置运算符
**

例如:

print(2**2) # Will return 4

直接使用
**
操作符:

print(2 ** 5)

如果要将函数缩短为一行,可以使用如下lambda语句:

您可以使用**内置运算符来代替循环中数字的多次相乘。例如,5**4相当于5*5*5*5,将给出完全相同的输出

另外,我还刚刚开始编程,所以我可能没有最好的答案。

你可以用这个

**


如果目标是使用自己的函数,则将值4返回到3的幂次方(与4*4*4相同):

。您可以使用以下选项缩短if:

value_when_true if condition else value_when_false;

您可以研究递归函数,它们一开始有点棘手,但却是一个很好的大脑练习。 递归幂函数如下所示:

def power(a, n):
    if n == 0:
        return 1
    elif n == 1:
        return a
    else:
        return a * power(a, n-1)

您可以使用
**
这是一个求幂运算符

def power(a, n):
    return a**n
print(power(2, 5))
或者简单地使用lambda函数。你可以

打印((λx,y:x**y)(2,5))

我可以看出,您的总体需求是获得x的威力

如果您不能使用导入数学,那么请使用内置的指数算术运算符**

你需要5到4的幂,那么代码就可以了

print(5**4) # In one line

您可以使用pow函数代替“x=x*a”。此外,即使您不想使用该函数,也可以将其简化为“x*=a”


这个怎么样?你可以使用abs函数将负数转换成正数,这样就不需要额外的代码了简单使用**就可以做任何事情了

python中有内置函数
pow(base,exp)
。或者你知道,好老的
base**exp
@Prometheus那是。。。为什么我想不起来呢?这是一个诅咒的幂函数
func=(lambda base,exp:(lambda ff:ff(ff,base,exp))(lambda f,n,p:1如果p==0,其他n如果p==1,其他n((lambda x:x*x)(f(f,n,p//2))*(n如果p%2==1,其他1)))
在没有
pow的单行中
***
如果您不想使用
***
至少可以删除
elif
部分,并将
else
路径中的循环更改为
范围内的i(abs(n)):
。当然,
print(1)
必须替换为
return 1
。当然,但你真的不应该在pythonth中使用它;但是,作为一名学生,我被要求制作像这样的函数,以实践逻辑,而不是函数的实际可用性。当它显然是错误的,并且是在@Prometheus的正确评论之后发布的,这怎么可能是被接受的答案呢?还是我遗漏了什么?我的意思是
x*=a
x=x*a
的简写,但这是乘法而不是指数运算,这是最初的问题,对吗?
def power(b,n):
    n=abs(n)
    print(b**n)
print(power(2,-5))