鱼C论坛

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

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

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

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

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

x
题目:
写一个函数
  1. def MaxStr(字符串列表):
  2.         .......
  3.         .......
复制代码

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

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

例:
  1. >>> MaxStr(['Ruby', 'Python'])
  2. 'Python'
  3. >>> MaxStr(['FishC', 'Turtle', 'Program'])
  4. 'Program'
复制代码


楼主解法:
游客,如果您要查看本帖隐藏内容请回复
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-8-22 16:17:45 | 显示全部楼层
  1. def MaxStr(strlist):
  2.     maxall=0
  3.     index=0
  4.     for i in strlist:
  5.         sum1=0
  6.         for j in i:
  7.             sum1+=int(ord(j))
  8.         if sum1>maxall:
  9.             maxall=sum1
  10.             index=i
  11.     print(index)
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

以前没注意到max也能像sorted一样用key来比较。学习了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

不过max函数和sorted函数[-1]的值会有可能不一样的,当列表里有2个相同的最大值的时候,max会返回第一个最大值,sorted()[-1]返回最后一个最大值。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

是的,在我出题时也没考虑周到,如果有相同和的,大家的答案会不一样。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-22 20:04:07 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

  11. ##  {'yPhont', 'Python'}
  12. ##  {'Program'}
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-28 22:26:55 | 显示全部楼层
oo
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-10 08:43:15 | 显示全部楼层
学习
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-30 18:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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