我正在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]
答案 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列表还意味着将保留其他类型的空白,这可能对您有用吗?