2016-11-16 120 views
0

有人能帮助我完成这个源代码 时输入的字符串,改变数组列表,和输出,在如何输入字符串,输出INT,使用阵列蟒蛇

在该表

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

ERROR INT

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

示例:对于输入abc预期输出应为:

a 
0 
b 
90 
c 
180 
+1

您应该添加的输入例子,所需的输出。请参阅http://stackoverflow.com/help/mcve –

+0

'范围(len(y))'将失败,因为列表的索引从'0'开始而不是'1'。 – Torxed

回答

2

.具有较高优先级的字符串连接+

这种表达实际上"{["+y[i]+"]}".format(table)被评估为:

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

这是不是你想要的。

必须使用括号来强制级联之前应用格式的方法:

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

顺便说一句,我认为这是一个简单的例子,因为这里使用的格式确实是矫枉过正,因为这将产生相同的输出:

for c in y: 
    print(c) 
    print(table[c]) 
+0

谢谢先生.. 格式化方法之前总是使用圆括号。 btw iam仍然是新手 –

+0

说明是准确的,那有效...就其产生预期产出的意义而言。但是使用'.format()'从字典中获取一个映射的值......这是最可怕的方法。 – Guillaume

+0

@Guillaume:我认为这是一个简化的例子来演示一个问题......无论如何我编辑了我的文章:-) –

0

如果我正确地理解了你,你想将y中的每个元素转换为int。你可以使用列表理解:

y = [int(x) for x in y] 
1

我不确定你想要做什么。但也许这样?

for i in y: 
    print(i, table[i]) 
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不是混淆。

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