如果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
答案 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
说实话,我认为最初的方式可能会更好,因为它的作用非常明显,但我只想表明有一种更简单的方法。