def z6():
#13的20次方的最后三位数是多少
def zz6(x,y,z):
xx=[x]*y
return reduce(lambda x,y:x*y%z, xx)
print zz6(13,20,1000)
不太明白return reduce(lambda x,y:x*y%z, xx)这句的意思,reduce和lambda都是明白 但是组合起来就不明白了 希望能详细解释下,同时将上述代码运行的时候会出现IndentationError: unindent does not match any outer indentation level错误 不知道何故
5 个解决方案
#1
太乱了!
我也是看了Python才2周,给你这段代码,看看有问题吗
def lb3_pow(n , e):
if type(n)!=int:
print'error:first argument'
return -1
if type(e)!=int:
print 'error:second argument'
return -1
if n<0 and type(e)==float:
print 'negative number can not be used to calculator power'
return -1
result=n**e
return result%1000
try:
n=input('enter two number_')
e=input()
except:
print 'illegal input:<it is not number or did not end of <CR> >'
exit(1)
print lb3_pow(n,e)
我也是看了Python才2周,给你这段代码,看看有问题吗
def lb3_pow(n , e):
if type(n)!=int:
print'error:first argument'
return -1
if type(e)!=int:
print 'error:second argument'
return -1
if n<0 and type(e)==float:
print 'negative number can not be used to calculator power'
return -1
result=n**e
return result%1000
try:
n=input('enter two number_')
e=input()
except:
print 'illegal input:<it is not number or did not end of <CR> >'
exit(1)
print lb3_pow(n,e)
#2
xx=[x]*y意思是xx是一个列表,里面有y个x元素;
Python 支持一种有趣的语法,它允许你快速定义单行的最小函数这些叫做 lambda 的函数。
lambda x,y:x*y%z相当于一个小函数,以x,y为参数,x*y之后对Z取余
reduce(lambda x,y:x*y%z, xx)
意思就是对xx的序列连续的使用lambda函数进行运算, 直到这个序列只剩一个值, 然后返回该值
就是(((13*13%1000)*13)%1000)*13)%1000)......意思相当于一个循环,每次对前面两项取余,然后返回一个值,乘以下一个数再取余...
例如
11*11=121,对100取余得到21,然后21*11=231,对100取余得到31....
程序运行错误应该是你的格式问题,应该是
def zz6(x,y,z):
xx=[x]*y
return reduce(lambda x,y:x*y%z, xx)
print zz6(11,3,1000)
希望可以帮助到你
Python 支持一种有趣的语法,它允许你快速定义单行的最小函数这些叫做 lambda 的函数。
lambda x,y:x*y%z相当于一个小函数,以x,y为参数,x*y之后对Z取余
reduce(lambda x,y:x*y%z, xx)
意思就是对xx的序列连续的使用lambda函数进行运算, 直到这个序列只剩一个值, 然后返回该值
就是(((13*13%1000)*13)%1000)*13)%1000)......意思相当于一个循环,每次对前面两项取余,然后返回一个值,乘以下一个数再取余...
例如
11*11=121,对100取余得到21,然后21*11=231,对100取余得到31....
程序运行错误应该是你的格式问题,应该是
def zz6(x,y,z):
xx=[x]*y
return reduce(lambda x,y:x*y%z, xx)
print zz6(11,3,1000)
希望可以帮助到你
#3
2L的朋友的代码看懂了 但是太复杂了。。
3L的朋友解释的很清楚 谢谢了 完全明白了 十分明白
3L的朋友解释的很清楚 谢谢了 完全明白了 十分明白
#4
不过python支持大数运算,可以直接求
>>> print str(13**20)[-3:]
801
>>>
#5
嗯 这种方法确实更简单 学到一招
#1
太乱了!
我也是看了Python才2周,给你这段代码,看看有问题吗
def lb3_pow(n , e):
if type(n)!=int:
print'error:first argument'
return -1
if type(e)!=int:
print 'error:second argument'
return -1
if n<0 and type(e)==float:
print 'negative number can not be used to calculator power'
return -1
result=n**e
return result%1000
try:
n=input('enter two number_')
e=input()
except:
print 'illegal input:<it is not number or did not end of <CR> >'
exit(1)
print lb3_pow(n,e)
我也是看了Python才2周,给你这段代码,看看有问题吗
def lb3_pow(n , e):
if type(n)!=int:
print'error:first argument'
return -1
if type(e)!=int:
print 'error:second argument'
return -1
if n<0 and type(e)==float:
print 'negative number can not be used to calculator power'
return -1
result=n**e
return result%1000
try:
n=input('enter two number_')
e=input()
except:
print 'illegal input:<it is not number or did not end of <CR> >'
exit(1)
print lb3_pow(n,e)
#2
xx=[x]*y意思是xx是一个列表,里面有y个x元素;
Python 支持一种有趣的语法,它允许你快速定义单行的最小函数这些叫做 lambda 的函数。
lambda x,y:x*y%z相当于一个小函数,以x,y为参数,x*y之后对Z取余
reduce(lambda x,y:x*y%z, xx)
意思就是对xx的序列连续的使用lambda函数进行运算, 直到这个序列只剩一个值, 然后返回该值
就是(((13*13%1000)*13)%1000)*13)%1000)......意思相当于一个循环,每次对前面两项取余,然后返回一个值,乘以下一个数再取余...
例如
11*11=121,对100取余得到21,然后21*11=231,对100取余得到31....
程序运行错误应该是你的格式问题,应该是
def zz6(x,y,z):
xx=[x]*y
return reduce(lambda x,y:x*y%z, xx)
print zz6(11,3,1000)
希望可以帮助到你
Python 支持一种有趣的语法,它允许你快速定义单行的最小函数这些叫做 lambda 的函数。
lambda x,y:x*y%z相当于一个小函数,以x,y为参数,x*y之后对Z取余
reduce(lambda x,y:x*y%z, xx)
意思就是对xx的序列连续的使用lambda函数进行运算, 直到这个序列只剩一个值, 然后返回该值
就是(((13*13%1000)*13)%1000)*13)%1000)......意思相当于一个循环,每次对前面两项取余,然后返回一个值,乘以下一个数再取余...
例如
11*11=121,对100取余得到21,然后21*11=231,对100取余得到31....
程序运行错误应该是你的格式问题,应该是
def zz6(x,y,z):
xx=[x]*y
return reduce(lambda x,y:x*y%z, xx)
print zz6(11,3,1000)
希望可以帮助到你
#3
2L的朋友的代码看懂了 但是太复杂了。。
3L的朋友解释的很清楚 谢谢了 完全明白了 十分明白
3L的朋友解释的很清楚 谢谢了 完全明白了 十分明白
#4
不过python支持大数运算,可以直接求
>>> print str(13**20)[-3:]
801
>>>
#5
嗯 这种方法确实更简单 学到一招