ASCII更改数字

2024-06-01 05:50:24 发布

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

我在Python的ASCII代码中遇到了一个问题,当我试图将一个字母转换成ASCII时,它会将ASCII中的数字转换成更多的ASCII代码。我该怎么解决这个问题?你知道吗

Choice = input("Now tell us which code language you like to convert this to Binary or ASCII: \n")
Code = input("Insert your code here, it converts letters to Binary/ASCII: \n\n")

Zero = '048'
One = '049'
Two = '050'
Three = '051'
Four = '052'
Five = '053'
Six = '054'
Seven = '055'
Eight = '056'
Nine = '057'

NewCode = Code.replace('0', Zero)
print(NewCode, '\n\n')
time.sleep(0.1)
NewCode = NewCode.replace('1', One)
print(NewCode, '\n\n')
time.sleep(0.1)
NewCode = NewCode.replace('2', Two)
print(NewCode, '\n\n')
time.sleep(0.1)
NewCode = NewCode.replace('3', Three)
print(NewCode, '\n\n')
time.sleep(0.1)
NewCode = NewCode.replace('4', Four)
print(NewCode, '\n\n')
time.sleep(0.1)
NewCode = NewCode.replace('5', Five)
print(NewCode, '\n\n')
time.sleep(0.1)
NewCode = NewCode.replace('6', Six)
print(NewCode, '\n\n')
time.sleep(0.1)
NewCode = NewCode.replace('7', Seven)
print(NewCode, '\n\n')
time.sleep(0.1)
NewCode = NewCode.replace('8', Eight)
print(NewCode, '\n\n')
time.sleep(0.1)
NewCode = NewCode.replace('9', Nine)
print(NewCode, '\n\n')
time.sleep(0.1)

Tags: to代码inputtimeasciicodesleepone
3条回答

问题是替换字符串包含的字符将被以后的.replace()调用替换。你知道吗

一种解决方案是一次处理一个字符的输入,而不是对整个字符串使用.replace()。你知道吗

顺便说一句,Python有一个ord()函数,返回字符的代码,通常是ASCII。你知道吗

NewCode = ''
for char in Code:
    NewCode += str(ord(char)).zfill(3)

您要做的工作可以在一行字内完成,而无需硬编码字符的ASCII码:

code = '3210' # Do not use initial upper-case letters for variable names!
newCode = ''.join('{:03}'.format(ord(n)) for n in code)
# '051050049048'

然而,你练习的目的还不清楚。还请记住,“0XY”通常意味着“XY”是用八进制数系统写的。因此,X和Y都不能是8或9。你知道吗

你的问题是你一直在修改NewCode,这样在每一步它都会继续修改自己,把数字改成ASCII数字。不要对每个replace语句重复使用NewCode,而是使用一个新变量作为缓冲区。你知道吗

Code = '3210'
NewCode = Code.replace('', Zero) #NewCode is now 321048
print(NewCode, '\n\n')
time.sleep(0.1)
NewCode = NewCode.replace('4', Four) #The '4' near the end of '321048' gets replaced with '052' making NewCode = 32100528
print(NewCode, '\n\n')
time.sleep(0.1)

相关问题 更多 >