首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

小菜求教python一个练习题解决方法

2012-04-19 
小菜求教python一个练习题刚学习python看到一个练习题def z6():#13的20次方的最后三位数是多少def zz6(x,y

小菜求教python一个练习题
刚学习python 看到一个练习题 

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错误 不知道何故

[解决办法]
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)

希望可以帮助到你

热点排行