在ord中打印字符串

2024-09-28 22:22:11 发布

您现在位置:Python中文网/ 问答频道 /正文

目标是从用户处读取一个字符串,并将该字符串按ASCII代码的顺序排列,而不使用列表,或者下面的sort()是我的代码

answer = input("enter string: ")
len_ans = len(answer)
new_answer = ""
previous = " "
leftover =""

while True:
    for i in range(len_ans):

        if (ord(previous[0])) >= (ord(answer[i])):
            new_answer += previous
        else:
            leftover += previous
        print(new_answer)

        previous = answer[i]

    new_answer += leftover
    leftover = ""

    answer = new_answer

    if answer == new_answer:
        print(new_answer)
        break
    else: 
        new_answer = ""

Tags: 字符串代码用户answer目标newlenif
3条回答

使用sorted函数:

>>> s = 'Hello, world!'

>>> sorted(s)
=> [' ', '!', ',', 'H', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r', 'w']   

>>> ''.join(sorted(s))
=> ' !,Hdellloorw'

也许有人会告诉你怎么用chrord

word = 'Hello, World!'

ords = sorted(ord(x) for x in word)
new_word = ''.join(chr(x) for x in ords)
print(new_word)

输出

!,Hdellloorw
  1. 您不需要使用ord来比较python字符串的ASCII代码。你知道吗
  2. 你的algro排序不正确…我无法识别它属于哪个algro…它看起来像一个快速排序,但没有很好地使用递归。你知道吗

你代码里的这一行肯定不对

answer = new_answer
if answer == new_answer:

下面是一个不使用list和sort()的冒泡排序示例,希望对您有所帮助。。。你知道吗

answer = 'Hello, world!'

n=len(answer)
for i in range(n-1):
    for j in range(n-1,i,-1):
        if answer[j]<answer[j-1]:
            answer=answer[:j-1]+answer[j]+answer[j-1]+answer[j+1:]


print(answer)

相关问题 更多 >