在python 3中将字符串打印为整数

时间:2015-05-14 11:45:44

标签: python string integer

我正在python 3中编写一个程序,将输入字符串转换为整数。代码只有一个问题。每当有空间出现时它会打印-64。我已经尝试编辑代码,但它会打印-64和空格。有什么建议吗?

n = input("please enter the text:").lower()

print(n)
a = []
for i in n:
    a.append(ord(i)-96)
    if (ord(i)-96) == -64:
        a.append(" ")
print(a)

由于

Input: "BatMan is Awesome"
Output: [2, 1, 20, 13, 1, 14, -64, ' ', 9, 19, -64, ' ', 1, 23, 5, 19, 15, 13, 5]

4 个答案:

答案 0 :(得分:2)

如果我理解正确,您想将"abc def"转换为[1, 2, 3, " ", 4, 5, 6]。目前,您首先将ord(i) - 96添加到列表中,然后,如果该字符是空格,则添加一个额外的空格。如果它不是空格,您只想添加ord(i) - 96

n = input("please enter the text:").lower()

print(n)
a = []
for i in n:

    if (ord(i)-96) == -64:
        a.append(" ")
    else:
        a.append(ord(i)-96)
print(a)

答案 1 :(得分:2)

如果字符不是空格,您可以检查字符是否space str.isspace()添加ord(i)-96,否则只需添加字符:

n = "BatMan is Awesome".lower()

print([ord(i)-96 if not i.isspace() else i for i in n])

[2, 1, 20, 13, 1, 14, ' ', 9, 19, ' ', 1, 23, 5, 19, 15, 13, 5]

循环中的等效代码为:

a = []
for i in n:
    if not i.isspace():
        a.append(ord(i)-96)
    else:
        a.append(i)

答案 2 :(得分:1)

实际上,您在检查条件ord(i)-96之前将a附加到if (ord(i)-96) == -64,所以正确的方法是先检查条件,如果匹配则再附加" "其他简单附加ord(i)-96,您只需对一个if条件执行相同操作,并通过将条件恢复为忽略其他原因:

n = input("please enter the text:").lower()

print(n)
a = []
for i in n:
    if (ord(i)-96) != -64:
        a.append(ord(i)-96)     
print(a)

答案 3 :(得分:1)

您也可以将其作为一个(ish)-liner:

import string

n = input("please enter the text:").lower()

a = [ord(c) - 96 if c not in string.whitespace else c for c in n]
print(a)

使用string.whitespace列表还意味着将保留其他类型的空白,这可能对您有用吗?