如何输入字符串,输出int,使用数组python

时间:2016-11-16 08:53:58

标签: python arrays python-3.4

有人可以帮我完成此源代码 输入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

5 个答案:

答案 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)

最后一点,您应该使用描述性名称命名变量,xy不仅仅是令人困惑。

答案 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]))