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