用python按平均分排序_python – 按字母/字典顺序排列的两个字符串的平均值

如果您定义字符字母,您只需转换为基数10,执行平均值,然后转换回base-N,其中N是字母表的大小.

alphabet = 'abcdefghijklmnopqrstuvwxyz'

def enbase(x):

n = len(alphabet)

if x < n:

return alphabet[x]

return enbase(x/n) + alphabet[x%n]

def debase(x):

n = len(alphabet)

result = 0

for i, c in enumerate(reversed(x)):

result += alphabet.index(c) * (n**i)

return result

def average(a, b):

a = debase(a)

b = debase(b)

return enbase((a + b) / 2)

print average('a', 'z') #m

print average('aa', 'zz') #mz

print average('cat', 'doggie') #budeel

print average('google', 'microsoft') #gebmbqkil

print average('microsoft', 'google') #gebmbqkil

编辑:根据评论和其他答案,您可能希望通过将字母表的第一个字母附加到较短的单词来处理不同长

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值