给定字符串"aaababababab" (只有'a'或'b'允许):如何通过只使用like循环将字符串按字母顺序排序为"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)但是它只是简单地将原始单词打印回来。如何让它打印所需的输出?
发布于 2020-10-31 16:10:52
根据您当前的想法,您只需根据字母的值将其附加到一端或另一端即可。这将允许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发布于 2020-10-31 16:14:09
您可以创建两个“助手”变量:一个用于积累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)我认为这样做是正确的。
发布于 2020-10-31 16:08:53
您的代码不工作,因为您添加了您目前的字母,在结尾-因此,它将是相同的。
相反,您可以在循环一次字符串时计数'a'的数量(for循环更适合,但也可以使用)-然后打印剩余的'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))https://stackoverflow.com/questions/64623704
复制相似问题