有人可以帮我完成此源代码 输入String,更改为数组列表,并在该表中输出该
x = input()
y = list(x)
table = {" ":270,
"a":0,
"b":90,
"c":180,
"d":270,
"e":0,
"f":90,
"g":180,
"h":270,
"i":0,
"j":90,
"k":180,
"l":270,
"m":0,
"n":90,
"o":180,
"p":270,
"q":0,
"r":90,
"s":180,
"t":270,
"u":0,
"v":90,
"w":180,
"x":270,
"y":0,
"z":90,}
for i in range(len(y)):
print(y[i])
print("{["+y[i]+"]}".format(table))
时出错
print("{["+y[i]+"]}".format(table))
示例:对于输入abc
,预期输出应为:
a
0
b
90
c
180
答案 0 :(得分:2)
.
的字符串连接+
具有更高的优先级。
此表达式"{["+y[i]+"]}".format(table)
实际上被评估为:
"{["+y[i]+("]}".format(table))
这不是你想要的。
您必须使用括号强制连接之前应用格式化方法:
print(("{["+y[i]+"]}").format(table))
顺便说一下,我认为这是一个简化的例子,因为在这里使用格式实在是太过分了,因为这会产生相同的输出:
for c in y:
print(c)
print(table[c])
答案 1 :(得分:1)
我不确定你想做什么。但也许是这样的?
for i in y:
print(i, table[i])
答案 2 :(得分:1)
此代码失败并且远非优雅:
y = list(x)
for i in range(len(y)):
print(y[i])
print("{["+y[i]+"]}".format(table))
在Python中,您通常不需要使用递增索引对字符串执行C样式迭代。只需直接迭代字符串:
for letter in x:
print("my letter is", letter)
print("my integer is", table[letter])
要将每个字母转换为匹配的整数,生成一个列表,然后打印它:
my_int_list = [table[letter] for letter in x]
print(my_int_list)
最后一点,您应该使用描述性名称命名变量,x
和y
不仅仅是令人困惑。
答案 3 :(得分:0)
如果我理解正确你想要将y中的每个元素转换为int。你可以使用列表理解:
y = [int(x) for x in y]
答案 4 :(得分:0)
我认为您的问题的答案将是此代码:
x = str(input('Input string\n'))
table = {" ": 270,
"a": 0,
"b": 90,
"c": 180,
"d": 270,
"e": 0,
"f": 90,
"g": 180,
"h": 270,
"i": 0,
"j": 90,
"k": 180,
"l": 270,
"m": 0,
"n": 90,
"o": 180,
"p": 270,
"q": 0,
"r": 90,
"s": 180,
"t": 270,
"u": 0,
"v": 90,
"w": 180,
"x": 270,
"y": 0,
"z": 90}
for element in x:
if element in table:
print '{}\n{}'.format(element, int(table[element]))