一个账号 发表于 2020-3-28 11:27:07

Python 重构 max() 函数

本帖最后由 zltzlt 于 2020-3-28 13:05 编辑

Python 重构 max() 函数

要求

实现 BIF max()
不能使用 BIF max()

例子

>>> max("awgij34tpqw;rleigj34oit 34joi4 jef ")
'w'
>>> max(3, 5, 7, 2, 1, 1, 99, 5, 8, 7, -54, 3, 12)
99
>>> max("abcdefgh", "abcdefghijklmnopqrst")
'abcdefghijklmnopqrst'
>>> max(, )

>>> max(, , )

>>> max(, , )

>>> max(, , , key=len)

>>> max("")
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
    max("")
ValueError: max() arg is an empty sequence
>>> max("", default="abc")
'abc'
>>> max([], default="abc")
'abc'

永恒的蓝色梦想 发表于 2020-3-28 11:41:01

本帖最后由 永恒的蓝色梦想 于 2020-3-28 12:14 编辑

def max(iterable,/,*vars,key=None,default=None):
    if vars:
      if default is None:
            greatest=iterable
      
      else:
            raise TypeError("Cannot specify a default for max() with multiple positional arguments")

    else:
      vars=iter(iterable)

      try:
            greatest=next(vars)

      except StopIteration:
            if default is None:
                raise ValueError("max() arg is an empty sequence")

            else:
                return default

    if key is None:
      for var in vars:
            if var>greatest:
                greatest=var

    else:
      flag=key(greatest)

      for var in vars:
            temp=key(var)

            if temp>flag:
                flag=temp
                greatest=var

    return greatest

Anonymous 发表于 2020-3-28 11:45:16

永恒的蓝色梦想 发表于 2020-3-28 11:41


解答错误

输入:print(max("awgij34tpqw;rleigj34oit 34joi4 jef "))

输出:a

预期输出:w


永恒的蓝色梦想 发表于 2020-3-28 12:12:36

匿名者 发表于 2020-3-28 11:45
解答错误

输入:print(max("awgij34tpqw;rleigj34oit 34joi4 jef "))


改了

每次都在修复上次的bug{:10_262:}
页: [1]
查看完整版本: Python 重构 max() 函数