冬雪雪冬 发表于 2017-8-22 15:28:18

每日一题84(答题领鱼币)

题目:
写一个函数
def MaxStr(字符串列表):
        .......
        .......
输入一个元素数量不限的字符串列表,返回其中字符串中各个字符的ASCII码之和最大的那个字符串。
如MaxStr(['Ruby', 'Python']),因'Ruby'的四个字符的ASCII码之和是418,而 'Python'的六个字符的ASCII码之和是642,所以最终返回 'Python'。

注:更准确的说是Unicode码,但大家惯用的还是说ASCII码。可以使用ord函数得到。

例:
>>> MaxStr(['Ruby', 'Python'])
'Python'
>>> MaxStr(['FishC', 'Turtle', 'Program'])
'Program'

楼主解法:
**** Hidden Message *****

古堡主人。 发表于 2017-8-22 16:17:45

def MaxStr(strlist):
    maxall=0
    index=0
    for i in strlist:
      sum1=0
      for j in i:
            sum1+=int(ord(j))
      if sum1>maxall:
            maxall=sum1
            index=i
    print(index)

jerryxjr1220 发表于 2017-8-22 16:34:54

何必要用sort呢,max函数也可以用key进行计算的呀。
def MaxStr(lst):
        return max(lst, key = lambda i: sum())

冬雪雪冬 发表于 2017-8-22 16:39:59

jerryxjr1220 发表于 2017-8-22 16:34
何必要用sort呢,max函数也可以用key进行计算的呀。

以前没注意到max也能像sorted一样用key来比较。学习了。

jerryxjr1220 发表于 2017-8-22 16:58:08

冬雪雪冬 发表于 2017-8-22 16:39
以前没注意到max也能像sorted一样用key来比较。学习了。

不过max函数和sorted函数[-1]的值会有可能不一样的,当列表里有2个相同的最大值的时候,max会返回第一个最大值,sorted()[-1]返回最后一个最大值。

冬雪雪冬 发表于 2017-8-22 17:04:40

jerryxjr1220 发表于 2017-8-22 16:58
不过max函数和sorted函数[-1]的值会有可能不一样的,当列表里有2个相同的最大值的时候,max会返回第一个 ...

是的,在我出题时也没考虑周到,如果有相同和的,大家的答案会不一样。

1173419450 发表于 2017-8-22 20:04:07

{:10_282:}

shigure_takimi 发表于 2017-12-5 11:22:28

def MaxStr(strList):
    maxAsciiSum = max() for string in strList])
    allRequestedString = [] # 要考虑到字母排序不同导致的有多个字符串存在的情况。
    for string in strList:
      asciiSum = sum()
      ifasciiSum == maxAsciiSum:
            allRequestedString.append(string)
    print(set(allRequestedString)) # 去重

MaxStr(['Ruby', 'Python', 'yPhont','Python', 'yPhont'])
MaxStr(['FishC', 'Turtle', 'Program'])

##{'yPhont', 'Python'}
##{'Program'}

burce_yxc 发表于 2020-7-28 22:26:55

oo

aironeng 发表于 2020-12-10 08:43:15

学习
页: [1]
查看完整版本: 每日一题84(答题领鱼币)