【问题标题】:How to Use Python's chr() properly如何正确使用 Python 的 chr()
【发布时间】:2015-03-04 21:09:06
【问题描述】:

我目前正在处理此代码..

message = input("Enter ASCII codes: ")

decodedMessage = ""

for item in message.split():
   decodedMessage += chr(int(item))   

print ("Decoded message:", decodedMessage)

#1st Run:
Enter ASCII codes: 97
Decoded message: a
#2nd Run:
Enter ASCII codes: 9797
Decoded message: ♅

我想要的结果是:aa 来自 97 和另外 97 个 ascii 代码。 如何才能做到这一点?

我想要这样。

ord_username = input("Enter Username:")
letters = str(ord_username)
ordlist=[]
z=""

for letter in letters:
    number = ord(letter)
    ordlist.append(number)


for i in ordlist:
    z += str(i) + ""
print (z)

#1st Run:
Enter Username:a
97
#2nd Run:
Enter Username:ab
9798

【问题讨论】:

  • 那么如何将1111 拆分为ascii(11)ascii(11)ascii(1)ascii(111)ascii(111)ascii(1)?是不是很暧昧?
  • 看在上帝的份上,请在数字之间留一个空格。
  • 值得补充的是,这是 Python3-ish。在 Python 2 上,将 ASCII 范围之外的任何内容传递给 chr() 会得到 TypeError
  • 实际上,我的老师不允许我这样做@FredLarson
  • 那么它应该如何知道在哪里拆分呢?您应该切片而不是拆分吗?

标签: python python-3.x for-loop concatenation chr


【解决方案1】:

您希望将您的字符串解释为由以“1”开头的 3 位字符串或不能以 1 开头的 2 位字符串组成。因此,您可以从头到尾遍历字符串,如果第一个字符是 1,则取出三个字符,如果不是,则取出两个字符。这只需要一个简单的方法:

def stringsplit(message):
    message_split = []
    while len(message) > 0:
        if message[0] == '1':
                message_split.append(message[:3])
                message = message[3:]
        else:
                message_split.append(message[:2])
                message = message[2:]
    return message_split

然后,将for item in message.split(): 替换为for item in stringsplit(message):

警告:Python 2.7 实现;您的里程可能会有所不同,但应该不会。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-20
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 2021-09-14
    • 2021-11-23
    相关资源
    最近更新 更多