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))