array python,输入字符串更改为List并输出int

时间:2016-12-12 02:18:43

标签: python arrays python-3.4

有人可以帮我解决我的问题吗? 那个问题是,

如果iam输入int(1,2,3,4,5,6,7,8,9,0)总是出错?

data = input()

array = list(data)

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,
         "0":180,
         "1":270,
         "2":0,
         "3":90,
         "4":180,
         "5":270,
         "6":0,
         "7":90,
         "8":180,
         "9":270,
         "!":0,
         "@":90,
         "#":180,
         "$":270,
         "%":0,
         "^":90,
         "&":180,
         "*":270,
         "(":0,
         ")":90,
         "-":180,
         "_":270,}



for i in range(len(array)):

    print(array[i])

    print(("{["+array[i]+"]}").format(table))

错误:

例如:如果输入#2

print(("{["+array[i]+"]}").format(table))

KeyError: 2

4 个答案:

答案 0 :(得分:2)

很遗憾,您无法使用整数作为格式语言中element_index字典的字符串键。这是格式语言的限制,它将整数>>> "{[2]}".format({'2':0}) KeyError: 2 >>> "{[*]}".format({'*':0}) '0' >>> "{[2]}".format({2:0}) '0' 视为整数。不幸的是,文档https://docs.python.org/3.5/library/string.html#formatspec中没有明确说明,除了说:

  

element_index :: =整数|索引字符串

{{1}}

答案 1 :(得分:1)

来自field_name的文档:

  

field_name本身以arg_name开头,arg_name是一个数字   或关键字。 如果是数字,则表示位置参数,...

  

因为arg_name不是引号分隔的,所以无法指定   a中的任意字典键(例如,字符串 '10'或': - ]')   格式字符串。

field_name 的语法规范显示为

field_name        ::=  arg_name ("." attribute_name | "[" element_index "]")*

我认为括号/括号表示arg_name可以是dotAttribute或索引表达式[2],因此'10'形式的任意字典键适用 - 如果是是正确的,然后文档可以更清楚。

>>> d
{'1': 123, 'a': 4}

使用'''{['1']}'''作为格式字符串,返回双引号字符串,但该字符串不起作用。

>>> '''{['1']}'''.format(d)
Traceback (most recent call last):
  File "<pyshell#98>", line 1, in <module>
    '''{['1']}'''.format(d)
KeyError: "'1'"

>>> d.__getitem__("'1'")
Traceback (most recent call last):
  File "<pyshell#100>", line 1, in <module>
    d.__getitem__("'1'")
KeyError: "'1'"

然后使用'''{1}'''作为格式字符串会创建一个传递给__getitem__的整数

>>> '''{[1]}'''.format(d)
Traceback (most recent call last):
  File "<pyshell#101>", line 1, in <module>
    '''{[1]}'''.format(d)
KeyError: 1
>>>

.format无法将看起来像'2'的字符串传递给__getitem__

如果字典有双引号键,那么它可以正常工作

>>> d["'1'"] = 'foo'
>>> d
{'1': 123, "'1'": 'foo', 'a': 4}
>>> "{['1']}".format(d)
'foo'
>>>

答案 2 :(得分:0)

我认为你得到的结果与

相同
data = input()

for char in data:
    print(char)
    print(table[char])

答案 3 :(得分:0)

由于您的问题已经得到解答,我想指出另一种方法,您可以将字符转换为数字,而无需极长的字典。

Eigen::Matrix2d

说实话,我认为最初的方式可能会更好,因为它的作用非常明显,但我只想表明有一种更简单的方法。