Python 如何仅使用While循环和条件按字母顺序排列字符串?

Python 如何仅使用While循环和条件按字母顺序排列字符串?,python,python-3.x,Python,Python 3.x,给定字符串“aaabababab”(仅允许'a'或'b'): 如何仅使用while循环将字符串按字母顺序排序为类似于“aaaaaaaabbbbb” 这是我目前的尝试: word = "ababababaabab" wordfixed = "" i = 0 while i < len(word): if word[i] == "a": wordfixed += "a" i

给定字符串
“aaabababab”
(仅允许
'a'
'b'
): 如何仅使用while循环将字符串按字母顺序排序为类似于
“aaaaaaaabbbbb”

这是我目前的尝试:

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)
word=“ababab”
wordfixed=“”
i=0
而我

但是它只是将原始单词打印回来。如何让它打印所需的输出?

您的代码不起作用,因为您在末尾添加了当前的字母,因此以后将保持不变

您可以在字符串中循环一次时计算
'a'
'的数量(for-loop更合适,但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))

根据您当前的想法,您可以根据字母的值将其附加到一端或另一端。这将允许
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
word=“ababab”
wordfixed=“”
i=0
而我
您可以创建两个“helper”变量:一个用于累加
a
s,另一个用于
b
s。最后,只需按正确的顺序连接它们:

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)
word=“ababab”
wordfixed=“”
wordfixed2=“”
wordfixed3=“”
i=0
而我

我认为这是正确的方法。

我会选择@Mark\u Meyer解决方案,但如果您真的不需要只使用while循环,这里有一个简单的方法:

word = "ababababaabab"
print(word.count('a')*'a' + word.count('b')*'b')
# aaaaaaabbbbbb

如何
“”。join(sorted(word))
而不是一个变量
wordfixed
您可以为所有“a”和所有“b”使用一个单独的变量,并在末尾连接它们。@WasifHasan问题状态(两次)只允许
while
这个问题说明只允许
while
循环,并且由于您的答案中缺少
while
,我认为它并不能真正回答问题。然而,这可以作为另一种解决方案的有用注释
word = "ababababaabab"
print(word.count('a')*'a' + word.count('b')*'b')
# aaaaaaabbbbbb