![](/img/trans.png)
[英]How to use for and while loop to sort in alphabetical order using python?
[英]How can I arrange a string by its alphabetical order using only While loop and conditions?
给定字符串"aaababababab"
(仅允许使用'a'
或'b'
):如何仅使用 while 循环将字符串按字母顺序排列为"aaaaaaabbbbb"
?
这是我目前的尝试:
word = "ababababaabab"
wordfixed = ""
i = 0
while i < len(word):
if word[i] == "a":
wordfixed += "a"
i += 1
elif word[i] == "b":
wordfixed += (word[i])
i += 1
print(wordfixed)
但它只是简单地打印回原始单词。 我怎样才能让它打印所需的输出?
使用您当前的想法,您可以根据字母的值将其附加到一端或另一端。 这将允许a
在开始时积累,而b
在结束时建立。
word = "ababababaabab"
wordfixed = ""
i = 0
while i < len(word):
if word[i] == "a":
wordfixed = word[i] + wordfixed
elif word[i] == "b":
wordfixed = wordfixed + word[i]
i += 1
print(wordfixed)
# aaaaaaabbbbbb
您可以创建两个“辅助”变量:一个用于累积a
,另一个用于b
。 然后最后只需按正确的顺序连接它们:
word = "ababababaabab"
wordfixed = ""
wordfixed2 = ""
wordfixed3 = ""
i = 0
while i < len(word):
if word[i] == "a":
wordfixed2 += "a"
elif word[i] == "b":
wordfixed3 += "b"
i += 1
wordfixed = wordfixed2 + wordfixed3
print(wordfixed)
我认为这是正确的做法。
您的代码不起作用,因为您在末尾添加了您当前拥有的字母 - 所以之后它会相同。
您可以改为在循环遍历字符串时计算'a'
的数量(for 循环更适合,但也可以使用 while )-然后打印剩余的'b'
:
word = "ababababaabab"
lw = len(word)
i = 0
a_s= 0
while i < lw:
if word[i] == 'a':
print("a", end="") # dont end the line quite yet
a_s += 1
i += 1
# print b's for remaining wordlength minus printed a's
print('b' * (lw-a_s))
或更好的 for 循环:
a_s = 0
for letter in word:
if letter == "a":
a_s +=1
print(letter, end="")
print('b' * (lw-a_s))
我将使用@Mark_Meyer 解决方案,但如果您真的不需要只使用 while 循环,这里有一个简单的方法:
word = "ababababaabab"
print(word.count('a')*'a' + word.count('b')*'b')
# aaaaaaabbbbbb
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.