2016-11-16 121 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]))