每日一题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 ***** 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) 何必要用sort呢,max函数也可以用key进行计算的呀。
def MaxStr(lst):
return max(lst, key = lambda i: sum()) jerryxjr1220 发表于 2017-8-22 16:34
何必要用sort呢,max函数也可以用key进行计算的呀。
以前没注意到max也能像sorted一样用key来比较。学习了。 冬雪雪冬 发表于 2017-8-22 16:39
以前没注意到max也能像sorted一样用key来比较。学习了。
不过max函数和sorted函数[-1]的值会有可能不一样的,当列表里有2个相同的最大值的时候,max会返回第一个最大值,sorted()[-1]返回最后一个最大值。 jerryxjr1220 发表于 2017-8-22 16:58
不过max函数和sorted函数[-1]的值会有可能不一样的,当列表里有2个相同的最大值的时候,max会返回第一个 ...
是的,在我出题时也没考虑周到,如果有相同和的,大家的答案会不一样。 {:10_282:} 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'}
oo 学习
页:
[1]