鱼C论坛

 找回密码
 立即注册
查看: 3685|回复: 9

[技术交流] 每日一题84(答题领鱼币)

[复制链接]
发表于 2017-8-22 15:28:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:
写一个函数
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'

楼主解法:
游客,如果您要查看本帖隐藏内容请回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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)

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
冬雪雪冬 + 5 + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-22 16:34:54 | 显示全部楼层
何必要用sort呢,max函数也可以用key进行计算的呀。
def MaxStr(lst):
        return max(lst, key = lambda i: sum([ord(j) for j in i]))

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
冬雪雪冬 + 5 + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-22 16:39:59 | 显示全部楼层
jerryxjr1220 发表于 2017-8-22 16:34
何必要用sort呢,max函数也可以用key进行计算的呀。

以前没注意到max也能像sorted一样用key来比较。学习了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-22 16:58:08 | 显示全部楼层
冬雪雪冬 发表于 2017-8-22 16:39
以前没注意到max也能像sorted一样用key来比较。学习了。

不过max函数和sorted函数[-1]的值会有可能不一样的,当列表里有2个相同的最大值的时候,max会返回第一个最大值,sorted()[-1]返回最后一个最大值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

是的,在我出题时也没考虑周到,如果有相同和的,大家的答案会不一样。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-22 20:04:07 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-12-5 11:22:28 | 显示全部楼层
def MaxStr(strList):
    maxAsciiSum = max([sum([ord(char) for char in string]) for string in strList])
    allRequestedString = [] # 要考虑到字母排序不同导致的有多个字符串存在的情况。
    for string in strList:
        asciiSum = sum([ord(char) for char in string])
        if  asciiSum == maxAsciiSum:
            allRequestedString.append(string)
    print(set(allRequestedString)) # 去重

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

##  {'yPhont', 'Python'}
##  {'Program'}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-28 22:26:55 | 显示全部楼层
oo
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-10 08:43:15 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 02:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表