python 字符串降序_关于python:创建一个以降序(NOT REVERSE)顺序返回给定字符串的函数...

我期末考试有这个问题,我想不出来。我最初尝试使用for i in range(len(string)-1)循环来比较索引中字符的数值。

我知道我可以用一个列表对列表进行排序,然后反向打印,但我们被告知不能使用列表或反向排序功能。

也不能使用print(string[::-1])技术,因为这不是要反转一个字符串,而是将其按降序排列。例如,字符串"hello"的输出为"ollhe"而不是"olleh",字符串"world"将输出为"wrold"而不是"dlrow"

如果有人能帮助我,我会感激的,谢谢。

是否需要按字母降序打印字符串?

埃多克斯1〔0〕怎么样

@根据我在问题中的理解,威廉姆不应该使用[::-1]

@卢卡乔奇,我以为他们只是在澄清,他们不只是想要弦的反面。

@威廉姆,你可能是对的,但我注意到他也不应该使用排序函数。

@卢卡乔奇啊,我错过了

""world"会输出,"wlord""——你确定这是按字母顺序递减的吗?

他们可能不想要这个答案,但计数方式:import collections; letters = collections.Counter(input); return ''.join(chr(idx) * letters[chr(idx)] for idx in xrange(ord(max(letters.keys())), 0, -1))

我对"世界"输出的错误,应该是"wrold",谢谢你的输入。

用几个字符串如st尝试以下操作。

def finalexamquestion(st):

st = st.lower()

max = 'a'

result =""

for j in range(len(st)):

for i in range(len(st)):

if st[i] >= max:

max = st[i]

idx = i

st = st[:idx]+st[idx+1:]

result += max

max = 'a'

#    print result

return result

使用字符的ASCII值在字符串中查找最大值(后面是字母表)。这基本上是一个处理字符串和排序字符的排序函数。您可以实现一个更好的排序算法,如QuickSort(我的实现使用的是O(n^2))。有更好的O(nlogn)算法,但这里不是重点,所以我用它来实现。

对于字符串中的每个字符,查找max并将其从字符串中移除。

在python 2.x中工作。可能需要在python 3.x中进行一些更改(缩进)。

这将在3.x中工作而不做任何更改。(除了印刷品,但还是被注释掉了)

我唯一要补充的是,在st中有大写字母的情况下。有两种处理方法,您可以在处理之前添加一个st = st.lower()命令,然后大写字母将被处理为普通字母,或者在您有st[i]使用ord(st[i])的任何地方,设置您的max = 0并使用result += chr(max),然后大写字母将在小写字母后自行排序。

@谢谢,我会用你的添加来编辑答案。

谢谢!这看起来像是我需要的代码。我有类似你的,但我没有嵌套的for循环。

目前还不清楚该函数是否只对字母或标点(和空格)起作用,所以我只假设字母表中的26个字母。然而,这种扩展是直接的。

def descent_alphabetically(word):

# Lazy way of constructing 'zyxw...dcba'

alphabet = ''.join(chr(i) for i in xrange(122, 96, -1))

word = word.lower()

return ''.join(letter * word.count(letter) for letter in alphabet)

这个想法是,你按相反的顺序浏览字母表中的字母,并计算出你的单词中有多少个字母。如果计数为0,则字符串乘法将为空,例如,如果您有字母"a"3,则会得到"aaa"。

你说名单是允许的。我不知道这是否也会延伸到range(),因为它产生了一个列表。但是你总是可以按照你想要的相反顺序对字母表中的"符号"进行硬编码。既然不允许使用列表,这是否也意味着列表/生成器的理解也不允许?您可以通过将语法更改为:

result = ''

for letter in alphabet:

result += letter * word.count(letter)

示例

descent_alphabetically('Hello')

'ollhe'

>>> descent_alphabetically('world')

'wrold'

>>> descent_alphabetically('alphabet')

'tplhebaa'

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值